/*
 * Copyright (c) 2018 Tencent. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
const models = require("./models");
const AbstractClient = require('../../common/abstract_client')
const GenerateVpnConnectionDefaultHealthCheckIpRequest = models.GenerateVpnConnectionDefaultHealthCheckIpRequest;
const CreateNetworkAclResponse = models.CreateNetworkAclResponse;
const NetworkAcl = models.NetworkAcl;
const ModifyAddressTemplateAttributeResponse = models.ModifyAddressTemplateAttributeResponse;
const ServiceTemplateGroup = models.ServiceTemplateGroup;
const CreateRoutesRequest = models.CreateRoutesRequest;
const DescribeHaVipsResponse = models.DescribeHaVipsResponse;
const SecurityGroupAssociationStatistics = models.SecurityGroupAssociationStatistics;
const DeleteServiceTemplateResponse = models.DeleteServiceTemplateResponse;
const CreateServiceTemplateRequest = models.CreateServiceTemplateRequest;
const IKEOptionsSpecification = models.IKEOptionsSpecification;
const CreateCcnResponse = models.CreateCcnResponse;
const DescribeVpnConnectionsRequest = models.DescribeVpnConnectionsRequest;
const CreateAssistantCidrRequest = models.CreateAssistantCidrRequest;
const DescribeNetworkInterfacesRequest = models.DescribeNetworkInterfacesRequest;
const ReleaseIp6AddressesBandwidthResponse = models.ReleaseIp6AddressesBandwidthResponse;
const DescribeVpcIpv6AddressesRequest = models.DescribeVpcIpv6AddressesRequest;
const SourceIpTranslationNatRule = models.SourceIpTranslationNatRule;
const DisableCcnRoutesRequest = models.DisableCcnRoutesRequest;
const ModifyNatGatewayDestinationIpPortTranslationNatRuleResponse = models.ModifyNatGatewayDestinationIpPortTranslationNatRuleResponse;
const ModifyNatGatewaySourceIpTranslationNatRuleRequest = models.ModifyNatGatewaySourceIpTranslationNatRuleRequest;
const SetVpnGatewaysRenewFlagRequest = models.SetVpnGatewaysRenewFlagRequest;
const ModifyCcnRegionBandwidthLimitsTypeResponse = models.ModifyCcnRegionBandwidthLimitsTypeResponse;
const DescribeVpnGatewaysResponse = models.DescribeVpnGatewaysResponse;
const ModifyNetworkAclQuintupleEntriesRequest = models.ModifyNetworkAclQuintupleEntriesRequest;
const ModifyServiceTemplateAttributeRequest = models.ModifyServiceTemplateAttributeRequest;
const SecurityGroupPolicy = models.SecurityGroupPolicy;
const DescribeIpGeolocationInfosRequest = models.DescribeIpGeolocationInfosRequest;
const AddTemplateMemberResponse = models.AddTemplateMemberResponse;
const ResetAttachCcnInstancesResponse = models.ResetAttachCcnInstancesResponse;
const CreateSnapshotPoliciesResponse = models.CreateSnapshotPoliciesResponse;
const DescribeServiceTemplateGroupsResponse = models.DescribeServiceTemplateGroupsResponse;
const DescribeVpcEndPointRequest = models.DescribeVpcEndPointRequest;
const AssignPrivateIpAddressesRequest = models.AssignPrivateIpAddressesRequest;
const ResourceStatisticsItem = models.ResourceStatisticsItem;
const DeleteRoutePolicyEntriesRequest = models.DeleteRoutePolicyEntriesRequest;
const DetachClassicLinkVpcRequest = models.DetachClassicLinkVpcRequest;
const DescribeBandwidthPackageBillUsageResponse = models.DescribeBandwidthPackageBillUsageResponse;
const DeleteBandwidthPackageResponse = models.DeleteBandwidthPackageResponse;
const ModifyNatGatewayAttributeRequest = models.ModifyNatGatewayAttributeRequest;
const DescribeLocalGatewayRequest = models.DescribeLocalGatewayRequest;
const FlowLog = models.FlowLog;
const ModifyDirectConnectGatewayAttributeRequest = models.ModifyDirectConnectGatewayAttributeRequest;
const IpField = models.IpField;
const CreateNetworkInterfaceResponse = models.CreateNetworkInterfaceResponse;
const AddBandwidthPackageResourcesRequest = models.AddBandwidthPackageResourcesRequest;
const ReplaceRoutePolicyEntriesRequest = models.ReplaceRoutePolicyEntriesRequest;
const AssignIpv6SubnetCidrBlockRequest = models.AssignIpv6SubnetCidrBlockRequest;
const ReplaceRoutePolicyAssociationsRequest = models.ReplaceRoutePolicyAssociationsRequest;
const CreateVpcResponse = models.CreateVpcResponse;
const AssistantCidr = models.AssistantCidr;
const ModifyNetworkAclEntriesRequest = models.ModifyNetworkAclEntriesRequest;
const ReplaceRoutePolicyAssociationsResponse = models.ReplaceRoutePolicyAssociationsResponse;
const DescribeVpcPrivateIpAddressesRequest = models.DescribeVpcPrivateIpAddressesRequest;
const AddressTemplate = models.AddressTemplate;
const ModifyTemplateMemberResponse = models.ModifyTemplateMemberResponse;
const VpnGatewayQuota = models.VpnGatewayQuota;
const DescribeBandwidthPackageBillUsageRequest = models.DescribeBandwidthPackageBillUsageRequest;
const UnassignIpv6AddressesResponse = models.UnassignIpv6AddressesResponse;
const DescribeFlowLogsRequest = models.DescribeFlowLogsRequest;
const DeleteTemplateMemberRequest = models.DeleteTemplateMemberRequest;
const CloneSecurityGroupRequest = models.CloneSecurityGroupRequest;
const AssociateNatGatewayAddressRequest = models.AssociateNatGatewayAddressRequest;
const CreateDirectConnectGatewayRequest = models.CreateDirectConnectGatewayRequest;
const CreateVpcEndPointRequest = models.CreateVpcEndPointRequest;
const ModifyBandwidthPackageAttributeRequest = models.ModifyBandwidthPackageAttributeRequest;
const TransformAddressResponse = models.TransformAddressResponse;
const DisassociateNetworkInterfaceSecurityGroupsRequest = models.DisassociateNetworkInterfaceSecurityGroupsRequest;
const RoutePolicyEntry = models.RoutePolicyEntry;
const SecurityGroupPolicySet = models.SecurityGroupPolicySet;
const ModifyFlowLogAttributeRequest = models.ModifyFlowLogAttributeRequest;
const UnassignIpv6SubnetCidrBlockResponse = models.UnassignIpv6SubnetCidrBlockResponse;
const ModifyVpcEndPointServiceAttributeRequest = models.ModifyVpcEndPointServiceAttributeRequest;
const DescribeIpGeolocationInfosResponse = models.DescribeIpGeolocationInfosResponse;
const DescribeVpcTaskResultRequest = models.DescribeVpcTaskResultRequest;
const AssociateNetworkAclSubnetsResponse = models.AssociateNetworkAclSubnetsResponse;
const DeleteNatGatewayDestinationIpPortTranslationNatRuleRequest = models.DeleteNatGatewayDestinationIpPortTranslationNatRuleRequest;
const ResetRoutesRequest = models.ResetRoutesRequest;
const CheckNetDetectStateRequest = models.CheckNetDetectStateRequest;
const RouteTableAssociation = models.RouteTableAssociation;
const ModifyCustomerGatewayAttributeRequest = models.ModifyCustomerGatewayAttributeRequest;
const DescribeRouteTablesResponse = models.DescribeRouteTablesResponse;
const DeleteVpcEndPointServiceWhiteListRequest = models.DeleteVpcEndPointServiceWhiteListRequest;
const DetachSnapshotInstancesResponse = models.DetachSnapshotInstancesResponse;
const ReplaceSecurityGroupPoliciesRequest = models.ReplaceSecurityGroupPoliciesRequest;
const DeleteVpcEndPointServiceRequest = models.DeleteVpcEndPointServiceRequest;
const DeleteCcnResponse = models.DeleteCcnResponse;
const ServiceTemplate = models.ServiceTemplate;
const DescribeCcnAttachedInstancesRequest = models.DescribeCcnAttachedInstancesRequest;
const AttachSnapshotInstancesResponse = models.AttachSnapshotInstancesResponse;
const DescribeNatGatewaySourceIpTranslationNatRulesRequest = models.DescribeNatGatewaySourceIpTranslationNatRulesRequest;
const DescribeNatGatewaysRequest = models.DescribeNatGatewaysRequest;
const ReferredSecurityGroup = models.ReferredSecurityGroup;
const InstanceJumbo = models.InstanceJumbo;
const ModifyFlowLogAttributeResponse = models.ModifyFlowLogAttributeResponse;
const DescribeBandwidthPackagesResponse = models.DescribeBandwidthPackagesResponse;
const ReplaceSecurityGroupPoliciesResponse = models.ReplaceSecurityGroupPoliciesResponse;
const DescribeDirectConnectGatewaysRequest = models.DescribeDirectConnectGatewaysRequest;
const DisassociateVpcEndPointSecurityGroupsRequest = models.DisassociateVpcEndPointSecurityGroupsRequest;
const DescribeIPv6AddressesResponse = models.DescribeIPv6AddressesResponse;
const AttachSnapshotInstancesRequest = models.AttachSnapshotInstancesRequest;
const CreateVpcEndPointServiceWhiteListResponse = models.CreateVpcEndPointServiceWhiteListResponse;
const DescribeInstanceJumboResponse = models.DescribeInstanceJumboResponse;
const DescribeIpGeolocationDatabaseUrlResponse = models.DescribeIpGeolocationDatabaseUrlResponse;
const DescribeNatGatewaySourceIpTranslationNatRulesResponse = models.DescribeNatGatewaySourceIpTranslationNatRulesResponse;
const DescribeVpcsRequest = models.DescribeVpcsRequest;
const AcceptAttachCcnInstancesRequest = models.AcceptAttachCcnInstancesRequest;
const CreateNetworkAclQuintupleEntriesResponse = models.CreateNetworkAclQuintupleEntriesResponse;
const DescribeGatewayFlowMonitorDetailResponse = models.DescribeGatewayFlowMonitorDetailResponse;
const IpGeolocationInfo = models.IpGeolocationInfo;
const DeleteFlowLogRequest = models.DeleteFlowLogRequest;
const NetDetectState = models.NetDetectState;
const DescribeSnapshotFilesRequest = models.DescribeSnapshotFilesRequest;
const HaVipDisassociateAddressIpResponse = models.HaVipDisassociateAddressIpResponse;
const DescribeTaskResultRequest = models.DescribeTaskResultRequest;
const ModifyAddressInternetChargeTypeResponse = models.ModifyAddressInternetChargeTypeResponse;
const CreateRoutePolicyResponse = models.CreateRoutePolicyResponse;
const ModifyIPv6AddressesBandwidthRequest = models.ModifyIPv6AddressesBandwidthRequest;
const DeleteVpcEndPointServiceResponse = models.DeleteVpcEndPointServiceResponse;
const ModifyNetworkAclQuintupleEntriesResponse = models.ModifyNetworkAclQuintupleEntriesResponse;
const AssignIpv6CidrBlockRequest = models.AssignIpv6CidrBlockRequest;
const CreateSecurityGroupPoliciesResponse = models.CreateSecurityGroupPoliciesResponse;
const UnassignIpv6CidrBlockResponse = models.UnassignIpv6CidrBlockResponse;
const ModifyVpnGatewayRoutesRequest = models.ModifyVpnGatewayRoutesRequest;
const HaVipAssociateAddressIpRequest = models.HaVipAssociateAddressIpRequest;
const DisassociateNatGatewayAddressResponse = models.DisassociateNatGatewayAddressResponse;
const DeleteRoutesResponse = models.DeleteRoutesResponse;
const DescribeCrossBorderComplianceRequest = models.DescribeCrossBorderComplianceRequest;
const DescribeSecurityGroupAssociationStatisticsResponse = models.DescribeSecurityGroupAssociationStatisticsResponse;
const ModifyAssistantCidrResponse = models.ModifyAssistantCidrResponse;
const CidrForCcn = models.CidrForCcn;
const NatGatewayAddress = models.NatGatewayAddress;
const DescribeVpcEndPointServiceResponse = models.DescribeVpcEndPointServiceResponse;
const ModifyNetworkAclEntriesResponse = models.ModifyNetworkAclEntriesResponse;
const ModifyVpcEndPointAttributeResponse = models.ModifyVpcEndPointAttributeResponse;
const DescribeFlowLogRequest = models.DescribeFlowLogRequest;
const DescribeIp6AddressesRequest = models.DescribeIp6AddressesRequest;
const CreateRoutePolicyRequest = models.CreateRoutePolicyRequest;
const DescribeAccountAttributesRequest = models.DescribeAccountAttributesRequest;
const DescribeAccountAttributesResponse = models.DescribeAccountAttributesResponse;
const ModifyAddressesRenewFlagRequest = models.ModifyAddressesRenewFlagRequest;
const AssignPrivateIpAddressesResponse = models.AssignPrivateIpAddressesResponse;
const DescribeSecurityGroupsRequest = models.DescribeSecurityGroupsRequest;
const RefreshDirectConnectGatewayRouteToNatGatewayRequest = models.RefreshDirectConnectGatewayRouteToNatGatewayRequest;
const DescribeNatGatewayDestinationIpPortTranslationNatRulesRequest = models.DescribeNatGatewayDestinationIpPortTranslationNatRulesRequest;
const ReturnNormalAddressesRequest = models.ReturnNormalAddressesRequest;
const ModifyNetworkAclAttributeResponse = models.ModifyNetworkAclAttributeResponse;
const ReplaceRoutePolicyEntriesResponse = models.ReplaceRoutePolicyEntriesResponse;
const AddBandwidthPackageResourcesResponse = models.AddBandwidthPackageResourcesResponse;
const DisassociateNetworkAclSubnetsResponse = models.DisassociateNetworkAclSubnetsResponse;
const SetCcnRegionBandwidthLimitsRequest = models.SetCcnRegionBandwidthLimitsRequest;
const ModifyAddressInternetChargeTypeRequest = models.ModifyAddressInternetChargeTypeRequest;
const ModifyIp6AddressesBandwidthRequest = models.ModifyIp6AddressesBandwidthRequest;
const CreateLocalGatewayRequest = models.CreateLocalGatewayRequest;
const DescribeDirectConnectGatewaysResponse = models.DescribeDirectConnectGatewaysResponse;
const CreateVpnGatewayRoutesRequest = models.CreateVpnGatewayRoutesRequest;
const CreateSecurityGroupWithPoliciesResponse = models.CreateSecurityGroupWithPoliciesResponse;
const DeleteAddressTemplateResponse = models.DeleteAddressTemplateResponse;
const ResumeSnapshotInstanceResponse = models.ResumeSnapshotInstanceResponse;
const ModifySubnetAttributeResponse = models.ModifySubnetAttributeResponse;
const ResetNatGatewayConnectionRequest = models.ResetNatGatewayConnectionRequest;
const ModifyCcnAttachedInstancesAttributeRequest = models.ModifyCcnAttachedInstancesAttributeRequest;
const DeleteAddressTemplateRequest = models.DeleteAddressTemplateRequest;
const CreateNatGatewaySourceIpTranslationNatRuleRequest = models.CreateNatGatewaySourceIpTranslationNatRuleRequest;
const NetworkInterface = models.NetworkInterface;
const TransformAddressRequest = models.TransformAddressRequest;
const ReplaceDirectConnectGatewayCcnRoutesRequest = models.ReplaceDirectConnectGatewayCcnRoutesRequest;
const DescribeRoutePolicyEntriesResponse = models.DescribeRoutePolicyEntriesResponse;
const ModifyAddressTemplateAttributeRequest = models.ModifyAddressTemplateAttributeRequest;
const ModifyRoutePolicyAttributeRequest = models.ModifyRoutePolicyAttributeRequest;
const CreateNatGatewayResponse = models.CreateNatGatewayResponse;
const ResetRoutePolicyAssociationsRequest = models.ResetRoutePolicyAssociationsRequest;
const DescribeVpcsResponse = models.DescribeVpcsResponse;
const ModifySecurityGroupAttributeRequest = models.ModifySecurityGroupAttributeRequest;
const ModifyNetDetectRequest = models.ModifyNetDetectRequest;
const DescribeSgSnapshotFileContentResponse = models.DescribeSgSnapshotFileContentResponse;
const DescribeNetDetectStatesResponse = models.DescribeNetDetectStatesResponse;
const DescribeVpcResourceDashboardResponse = models.DescribeVpcResourceDashboardResponse;
const AllocateIp6AddressesBandwidthResponse = models.AllocateIp6AddressesBandwidthResponse;
const DescribeNetDetectStatesRequest = models.DescribeNetDetectStatesRequest;
const DescribeFlowLogResponse = models.DescribeFlowLogResponse;
const DeleteRoutePolicyEntriesResponse = models.DeleteRoutePolicyEntriesResponse;
const DescribeBandwidthPackagesRequest = models.DescribeBandwidthPackagesRequest;
const DeleteDirectConnectGatewayCcnRoutesResponse = models.DeleteDirectConnectGatewayCcnRoutesResponse;
const DescribeAssistantCidrResponse = models.DescribeAssistantCidrResponse;
const BackupPolicy = models.BackupPolicy;
const IpAddressStates = models.IpAddressStates;
const InstanceStatistic = models.InstanceStatistic;
const InternetPriceDetail = models.InternetPriceDetail;
const CreateVpnConnectionRequest = models.CreateVpnConnectionRequest;
const CcnRoute = models.CcnRoute;
const ModifyIpv6AddressesAttributeResponse = models.ModifyIpv6AddressesAttributeResponse;
const DescribeTrafficPackagesRequest = models.DescribeTrafficPackagesRequest;
const DeleteSecurityGroupPoliciesRequest = models.DeleteSecurityGroupPoliciesRequest;
const VpnConnection = models.VpnConnection;
const DescribeCcnsRequest = models.DescribeCcnsRequest;
const ModifyNatGatewayAttributeResponse = models.ModifyNatGatewayAttributeResponse;
const DescribeNetDetectsRequest = models.DescribeNetDetectsRequest;
const CreateAddressTemplateGroupRequest = models.CreateAddressTemplateGroupRequest;
const AssociateIPv6AddressRequest = models.AssociateIPv6AddressRequest;
const DescribeCustomerGatewayVendorsResponse = models.DescribeCustomerGatewayVendorsResponse;
const DeleteSubnetResponse = models.DeleteSubnetResponse;
const EnableSnapshotPoliciesResponse = models.EnableSnapshotPoliciesResponse;
const Vpc = models.Vpc;
const CreateVpnGatewayResponse = models.CreateVpnGatewayResponse;
const DescribeNatGatewayDestinationIpPortTranslationNatRulesResponse = models.DescribeNatGatewayDestinationIpPortTranslationNatRulesResponse;
const FlowLogStorage = models.FlowLogStorage;
const DeleteRoutePolicyResponse = models.DeleteRoutePolicyResponse;
const DescribeVpcIpv6AddressesResponse = models.DescribeVpcIpv6AddressesResponse;
const RejectAttachCcnInstancesRequest = models.RejectAttachCcnInstancesRequest;
const ModifyCcnRegionBandwidthLimitsTypeRequest = models.ModifyCcnRegionBandwidthLimitsTypeRequest;
const VpnGatewayRoute = models.VpnGatewayRoute;
const DescribeVpcResourceDashboardRequest = models.DescribeVpcResourceDashboardRequest;
const VpcTaskResultDetailInfo = models.VpcTaskResultDetailInfo;
const ReplaceRouteTableAssociationRequest = models.ReplaceRouteTableAssociationRequest;
const AssociateNetworkAclSubnetsRequest = models.AssociateNetworkAclSubnetsRequest;
const ResetRoutePolicyEntriesResponse = models.ResetRoutePolicyEntriesResponse;
const CheckAssistantCidrRequest = models.CheckAssistantCidrRequest;
const RenewVpnGatewayRequest = models.RenewVpnGatewayRequest;
const AssociateIPv6AddressResponse = models.AssociateIPv6AddressResponse;
const DescribeSnapshotPoliciesRequest = models.DescribeSnapshotPoliciesRequest;
const DeleteTrafficPackagesRequest = models.DeleteTrafficPackagesRequest;
const NotifyRoutesRequest = models.NotifyRoutesRequest;
const DeleteVpcRequest = models.DeleteVpcRequest;
const ModifyServiceTemplateAttributeResponse = models.ModifyServiceTemplateAttributeResponse;
const DescribeCcnsResponse = models.DescribeCcnsResponse;
const CreateSubnetResponse = models.CreateSubnetResponse;
const DescribeSecurityGroupPoliciesResponse = models.DescribeSecurityGroupPoliciesResponse;
const DescribeGatewayFlowQosResponse = models.DescribeGatewayFlowQosResponse;
const ModifySecurityGroupPoliciesRequest = models.ModifySecurityGroupPoliciesRequest;
const NatGateway = models.NatGateway;
const ReplaceRoutesRequest = models.ReplaceRoutesRequest;
const CreateCustomerGatewayResponse = models.CreateCustomerGatewayResponse;
const TrafficPackage = models.TrafficPackage;
const WithdrawNotifyRoutesRequest = models.WithdrawNotifyRoutesRequest;
const ResourceDashboard = models.ResourceDashboard;
const DescribeSubnetResourceDashboardRequest = models.DescribeSubnetResourceDashboardRequest;
const CreateRoutePolicyEntriesRequest = models.CreateRoutePolicyEntriesRequest;
const DeleteServiceTemplateGroupResponse = models.DeleteServiceTemplateGroupResponse;
const DisassociateAddressRequest = models.DisassociateAddressRequest;
const NetworkAclEntrySet = models.NetworkAclEntrySet;
const DeleteVpnConnectionResponse = models.DeleteVpnConnectionResponse;
const ReleaseIPv6AddressesResponse = models.ReleaseIPv6AddressesResponse;
const DescribeBandwidthPackageResourcesRequest = models.DescribeBandwidthPackageResourcesRequest;
const EnableCcnRoutesRequest = models.EnableCcnRoutesRequest;
const Tag = models.Tag;
const CreateFlowLogResponse = models.CreateFlowLogResponse;
const DefaultVpcSubnet = models.DefaultVpcSubnet;
const CreateSubnetsResponse = models.CreateSubnetsResponse;
const DescribeGatewayFlowMonitorDetailRequest = models.DescribeGatewayFlowMonitorDetailRequest;
const FilterObject = models.FilterObject;
const ModifyBandwidthPackageAttributeResponse = models.ModifyBandwidthPackageAttributeResponse;
const DetachNetworkInterfaceResponse = models.DetachNetworkInterfaceResponse;
const DisassociateIPv6AddressRequest = models.DisassociateIPv6AddressRequest;
const ResetRoutesResponse = models.ResetRoutesResponse;
const DeleteNetworkAclRequest = models.DeleteNetworkAclRequest;
const NatGatewayDestinationIpPortTranslationNatRule = models.NatGatewayDestinationIpPortTranslationNatRule;
const CloneSecurityGroupResponse = models.CloneSecurityGroupResponse;
const CreateVpnConnectionResponse = models.CreateVpnConnectionResponse;
const AddressTemplateSpecification = models.AddressTemplateSpecification;
const VpcIpv6Address = models.VpcIpv6Address;
const AssignIpv6AddressesRequest = models.AssignIpv6AddressesRequest;
const CreateServiceTemplateGroupResponse = models.CreateServiceTemplateGroupResponse;
const NetDetect = models.NetDetect;
const VpnGatewayRouteModify = models.VpnGatewayRouteModify;
const DisableSnapshotPoliciesRequest = models.DisableSnapshotPoliciesRequest;
const MemberInfo = models.MemberInfo;
const ResumeSnapshotInstanceRequest = models.ResumeSnapshotInstanceRequest;
const ReplaceSecurityGroupPolicyRequest = models.ReplaceSecurityGroupPolicyRequest;
const ModifyVpcEndPointServiceAttributeResponse = models.ModifyVpcEndPointServiceAttributeResponse;
const DescribeReserveIpAddressesResponse = models.DescribeReserveIpAddressesResponse;
const DescribeSnapshotFilesResponse = models.DescribeSnapshotFilesResponse;
const DescribeCcnAttachedInstancesResponse = models.DescribeCcnAttachedInstancesResponse;
const HaVipAssociateAddressIpResponse = models.HaVipAssociateAddressIpResponse;
const DeleteCustomerGatewayResponse = models.DeleteCustomerGatewayResponse;
const CreateVpnGatewayRoutesResponse = models.CreateVpnGatewayRoutesResponse;
const CreateNetDetectRequest = models.CreateNetDetectRequest;
const CreateAddressTemplateResponse = models.CreateAddressTemplateResponse;
const CreateNatGatewayDestinationIpPortTranslationNatRuleResponse = models.CreateNatGatewayDestinationIpPortTranslationNatRuleResponse;
const DeleteAddressTemplateGroupRequest = models.DeleteAddressTemplateGroupRequest;
const DescribeNetworkInterfaceLimitRequest = models.DescribeNetworkInterfaceLimitRequest;
const CreateBandwidthPackageRequest = models.CreateBandwidthPackageRequest;
const DescribeIp6AddressesResponse = models.DescribeIp6AddressesResponse;
const ModifyRouteTableAttributeRequest = models.ModifyRouteTableAttributeRequest;
const ModifyDirectConnectGatewayAttributeResponse = models.ModifyDirectConnectGatewayAttributeResponse;
const DescribeVpnGatewaysRequest = models.DescribeVpnGatewaysRequest;
const DescribeInstanceJumboRequest = models.DescribeInstanceJumboRequest;
const NetDetectIpState = models.NetDetectIpState;
const InternetPrice = models.InternetPrice;
const ModifyIp6AddressesBandwidthResponse = models.ModifyIp6AddressesBandwidthResponse;
const CreateSubnetsRequest = models.CreateSubnetsRequest;
const DescribeVpcEndPointServiceRequest = models.DescribeVpcEndPointServiceRequest;
const DisableSnapshotPoliciesResponse = models.DisableSnapshotPoliciesResponse;
const AssociateAddressResponse = models.AssociateAddressResponse;
const ModifyCcnAttachedInstancesAttributeResponse = models.ModifyCcnAttachedInstancesAttributeResponse;
const UnassignIpv6SubnetCidrBlockRequest = models.UnassignIpv6SubnetCidrBlockRequest;
const CreateNetworkAclRequest = models.CreateNetworkAclRequest;
const DescribeAddressesRequest = models.DescribeAddressesRequest;
const DescribeSecurityGroupPoliciesRequest = models.DescribeSecurityGroupPoliciesRequest;
const ModifyNetworkInterfaceAttributeResponse = models.ModifyNetworkInterfaceAttributeResponse;
const InquiryPriceRenewAddressesRequest = models.InquiryPriceRenewAddressesRequest;
const CreateSecurityGroupResponse = models.CreateSecurityGroupResponse;
const DisassociateNetworkInterfaceSecurityGroupsResponse = models.DisassociateNetworkInterfaceSecurityGroupsResponse;
const ModifyGatewayFlowQosRequest = models.ModifyGatewayFlowQosRequest;
const DescribeNetworkInterfaceLimitResponse = models.DescribeNetworkInterfaceLimitResponse;
const AssignIpv6CidrBlockResponse = models.AssignIpv6CidrBlockResponse;
const CreateCcnRequest = models.CreateCcnRequest;
const DeleteTemplateMemberResponse = models.DeleteTemplateMemberResponse;
const DescribeIpGeolocationDatabaseUrlRequest = models.DescribeIpGeolocationDatabaseUrlRequest;
const DescribeVpcEndPointResponse = models.DescribeVpcEndPointResponse;
const DescribeNetworkAclQuintupleEntriesRequest = models.DescribeNetworkAclQuintupleEntriesRequest;
const DescribeSnapshotPoliciesResponse = models.DescribeSnapshotPoliciesResponse;
const EnableRoutesResponse = models.EnableRoutesResponse;
const ModifyRoutePolicyAttributeResponse = models.ModifyRoutePolicyAttributeResponse;
const DeleteVpnConnectionRequest = models.DeleteVpnConnectionRequest;
const NetworkAclEntry = models.NetworkAclEntry;
const DescribeAssistantCidrRequest = models.DescribeAssistantCidrRequest;
const RenewVpnGatewayResponse = models.RenewVpnGatewayResponse;
const DeleteDirectConnectGatewayResponse = models.DeleteDirectConnectGatewayResponse;
const DescribeIPv6AddressesRequest = models.DescribeIPv6AddressesRequest;
const ResetVpnGatewayInternetMaxBandwidthRequest = models.ResetVpnGatewayInternetMaxBandwidthRequest;
const EndPoint = models.EndPoint;
const DirectConnectGateway = models.DirectConnectGateway;
const Price = models.Price;
const HaVipDisassociateAddressIpRequest = models.HaVipDisassociateAddressIpRequest;
const ReturnNormalAddressesResponse = models.ReturnNormalAddressesResponse;
const DisableFlowLogsResponse = models.DisableFlowLogsResponse;
const DescribeBandwidthPackageResourcesResponse = models.DescribeBandwidthPackageResourcesResponse;
const DescribeCrossBorderComplianceResponse = models.DescribeCrossBorderComplianceResponse;
const ModifyVpnGatewayAttributeResponse = models.ModifyVpnGatewayAttributeResponse;
const AllocateIPv6AddressesRequest = models.AllocateIPv6AddressesRequest;
const AssociateDirectConnectGatewayNatGatewayResponse = models.AssociateDirectConnectGatewayNatGatewayResponse;
const EndPointService = models.EndPointService;
const ResetRoutePolicyAssociationsResponse = models.ResetRoutePolicyAssociationsResponse;
const DescribeVpnGatewayCcnRoutesRequest = models.DescribeVpnGatewayCcnRoutesRequest;
const DisassociateDirectConnectGatewayNatGatewayResponse = models.DisassociateDirectConnectGatewayNatGatewayResponse;
const CreateServiceTemplateGroupRequest = models.CreateServiceTemplateGroupRequest;
const CreateNetworkAclQuintupleEntriesRequest = models.CreateNetworkAclQuintupleEntriesRequest;
const DescribeDirectConnectGatewayCcnRoutesRequest = models.DescribeDirectConnectGatewayCcnRoutesRequest;
const DescribeClassicLinkInstancesResponse = models.DescribeClassicLinkInstancesResponse;
const DeleteReserveIpAddressesRequest = models.DeleteReserveIpAddressesRequest;
const DescribeVpnGatewayCcnRoutesResponse = models.DescribeVpnGatewayCcnRoutesResponse;
const DetachCcnInstancesRequest = models.DetachCcnInstancesRequest;
const ModifyVpcEndPointServiceWhiteListRequest = models.ModifyVpcEndPointServiceWhiteListRequest;
const MigrateNetworkInterfaceResponse = models.MigrateNetworkInterfaceResponse;
const DescribeSnapshotAttachedInstancesRequest = models.DescribeSnapshotAttachedInstancesRequest;
const CreateNatGatewaySourceIpTranslationNatRuleResponse = models.CreateNatGatewaySourceIpTranslationNatRuleResponse;
const DeleteNatGatewaySourceIpTranslationNatRuleResponse = models.DeleteNatGatewaySourceIpTranslationNatRuleResponse;
const CcnAttachedInstance = models.CcnAttachedInstance;
const SecurityPolicyDatabase = models.SecurityPolicyDatabase;
const InquiryPriceModifyAddressesBandwidthRequest = models.InquiryPriceModifyAddressesBandwidthRequest;
const CreateVpcEndPointServiceRequest = models.CreateVpcEndPointServiceRequest;
const Ipv6Address = models.Ipv6Address;
const CreateNetworkInterfaceRequest = models.CreateNetworkInterfaceRequest;
const BandwidthPackageBillBandwidth = models.BandwidthPackageBillBandwidth;
const DeleteHaVipResponse = models.DeleteHaVipResponse;
const DescribeFlowLogsResponse = models.DescribeFlowLogsResponse;
const VpcPrivateIpAddress = models.VpcPrivateIpAddress;
const CvmInstance = models.CvmInstance;
const DescribeNetworkAclsRequest = models.DescribeNetworkAclsRequest;
const DescribeNetworkAclQuintupleEntriesResponse = models.DescribeNetworkAclQuintupleEntriesResponse;
const DescribeSubnetsRequest = models.DescribeSubnetsRequest;
const CreateSubnetRequest = models.CreateSubnetRequest;
const AddressTemplateGroup = models.AddressTemplateGroup;
const DownloadCustomerGatewayConfigurationRequest = models.DownloadCustomerGatewayConfigurationRequest;
const DeleteBandwidthPackageRequest = models.DeleteBandwidthPackageRequest;
const HaVip = models.HaVip;
const ModifyAddressesBandwidthResponse = models.ModifyAddressesBandwidthResponse;
const LocalGateway = models.LocalGateway;
const RejectAttachCcnInstancesResponse = models.RejectAttachCcnInstancesResponse;
const SetCcnRegionBandwidthLimitsResponse = models.SetCcnRegionBandwidthLimitsResponse;
const ModifySnapshotPoliciesResponse = models.ModifySnapshotPoliciesResponse;
const ResetRoutePolicyEntriesRequest = models.ResetRoutePolicyEntriesRequest;
const InquiryPriceRenewAddressesResponse = models.InquiryPriceRenewAddressesResponse;
const DeleteRoutePolicyAssociationsResponse = models.DeleteRoutePolicyAssociationsResponse;
const CreateRoutePolicyAssociationsRequest = models.CreateRoutePolicyAssociationsRequest;
const RoutePolicy = models.RoutePolicy;
const DescribeCcnRoutesRequest = models.DescribeCcnRoutesRequest;
const GenerateVpnConnectionDefaultHealthCheckIpResponse = models.GenerateVpnConnectionDefaultHealthCheckIpResponse;
const CreateAndAttachNetworkInterfaceRequest = models.CreateAndAttachNetworkInterfaceRequest;
const DeleteVpcEndPointResponse = models.DeleteVpcEndPointResponse;
const DeleteNetDetectResponse = models.DeleteNetDetectResponse;
const AllocateAddressesRequest = models.AllocateAddressesRequest;
const CreateReserveIpAddressesRequest = models.CreateReserveIpAddressesRequest;
const ModifyVpnConnectionAttributeRequest = models.ModifyVpnConnectionAttributeRequest;
const UnassignIpv6CidrBlockRequest = models.UnassignIpv6CidrBlockRequest;
const ModifyAssistantCidrRequest = models.ModifyAssistantCidrRequest;
const CreateReserveIpAddressesResponse = models.CreateReserveIpAddressesResponse;
const ModifyGatewayFlowQosResponse = models.ModifyGatewayFlowQosResponse;
const ModifySecurityGroupAttributeResponse = models.ModifySecurityGroupAttributeResponse;
const AssociateDirectConnectGatewayNatGatewayRequest = models.AssociateDirectConnectGatewayNatGatewayRequest;
const AddressTemplateItem = models.AddressTemplateItem;
const ModifyAddressAttributeResponse = models.ModifyAddressAttributeResponse;
const AttachClassicLinkVpcRequest = models.AttachClassicLinkVpcRequest;
const GatewayFlowMonitorDetail = models.GatewayFlowMonitorDetail;
const ResetVpnConnectionResponse = models.ResetVpnConnectionResponse;
const ModifyAddressesRenewFlagResponse = models.ModifyAddressesRenewFlagResponse;
const Subnet = models.Subnet;
const DeleteNatGatewayDestinationIpPortTranslationNatRuleResponse = models.DeleteNatGatewayDestinationIpPortTranslationNatRuleResponse;
const DeleteVpnGatewayRequest = models.DeleteVpnGatewayRequest;
const ReplaceRouteTableAssociationResponse = models.ReplaceRouteTableAssociationResponse;
const AttachCcnInstancesRequest = models.AttachCcnInstancesRequest;
const ModifyBandwidthPackageBandwidthResponse = models.ModifyBandwidthPackageBandwidthResponse;
const DeleteRoutePolicyAssociationsRequest = models.DeleteRoutePolicyAssociationsRequest;
const CcnInstance = models.CcnInstance;
const DescribeLocalGatewayResponse = models.DescribeLocalGatewayResponse;
const ItemPrice = models.ItemPrice;
const DeleteNatGatewayRequest = models.DeleteNatGatewayRequest;
const ModifyCustomerGatewayAttributeResponse = models.ModifyCustomerGatewayAttributeResponse;
const ConflictItem = models.ConflictItem;
const InquiryPriceRenewVpnGatewayResponse = models.InquiryPriceRenewVpnGatewayResponse;
const AssignIpv6SubnetCidrBlockResponse = models.AssignIpv6SubnetCidrBlockResponse;
const CreateVpcEndPointResponse = models.CreateVpcEndPointResponse;
const DeleteAssistantCidrResponse = models.DeleteAssistantCidrResponse;
const DescribeCcnRegionBandwidthLimitsResponse = models.DescribeCcnRegionBandwidthLimitsResponse;
const ModifyTemplateMemberRequest = models.ModifyTemplateMemberRequest;
const EnableSnapshotPoliciesRequest = models.EnableSnapshotPoliciesRequest;
const DescribeAddressesResponse = models.DescribeAddressesResponse;
const GatewayQos = models.GatewayQos;
const GetCcnRegionBandwidthLimitsRequest = models.GetCcnRegionBandwidthLimitsRequest;
const ModifyIpv6AddressesAttributeRequest = models.ModifyIpv6AddressesAttributeRequest;
const DescribeCustomerGatewayVendorsRequest = models.DescribeCustomerGatewayVendorsRequest;
const DetachSnapshotInstancesRequest = models.DetachSnapshotInstancesRequest;
const DeleteLocalGatewayRequest = models.DeleteLocalGatewayRequest;
const ResetVpnGatewayInternetMaxBandwidthResponse = models.ResetVpnGatewayInternetMaxBandwidthResponse;
const AddressChargePrepaid = models.AddressChargePrepaid;
const DescribeVpnGatewayRoutesResponse = models.DescribeVpnGatewayRoutesResponse;
const DescribeNetworkAclsResponse = models.DescribeNetworkAclsResponse;
const DescribeNatGatewayDirectConnectGatewayRouteRequest = models.DescribeNatGatewayDirectConnectGatewayRouteRequest;
const DeleteFlowLogResponse = models.DeleteFlowLogResponse;
const AttachCcnInstancesResponse = models.AttachCcnInstancesResponse;
const CreateDefaultVpcResponse = models.CreateDefaultVpcResponse;
const ModifyVpcAttributeResponse = models.ModifyVpcAttributeResponse;
const ModifyVpnConnectionAttributeResponse = models.ModifyVpnConnectionAttributeResponse;
const PrivateIpAddressSpecification = models.PrivateIpAddressSpecification;
const AlgType = models.AlgType;
const MigratePrivateIpAddressResponse = models.MigratePrivateIpAddressResponse;
const DescribeUsedIpAddressRequest = models.DescribeUsedIpAddressRequest;
const DeleteRouteTableResponse = models.DeleteRouteTableResponse;
const DescribeVpcInstancesResponse = models.DescribeVpcInstancesResponse;
const AccountAttribute = models.AccountAttribute;
const AllocateIPv6AddressesResponse = models.AllocateIPv6AddressesResponse;
const DeleteSnapshotPoliciesRequest = models.DeleteSnapshotPoliciesRequest;
const DeleteDirectConnectGatewayCcnRoutesRequest = models.DeleteDirectConnectGatewayCcnRoutesRequest;
const ModifyNatGatewaySourceIpTranslationNatRuleResponse = models.ModifyNatGatewaySourceIpTranslationNatRuleResponse;
const CreateNatGatewayDestinationIpPortTranslationNatRuleRequest = models.CreateNatGatewayDestinationIpPortTranslationNatRuleRequest;
const CreateFlowLogRequest = models.CreateFlowLogRequest;
const InquirePriceCreateDirectConnectGatewayRequest = models.InquirePriceCreateDirectConnectGatewayRequest;
const AttachNetworkInterfaceResponse = models.AttachNetworkInterfaceResponse;
const DisassociateNatGatewayAddressRequest = models.DisassociateNatGatewayAddressRequest;
const DescribeTrafficPackagesResponse = models.DescribeTrafficPackagesResponse;
const DescribeServiceTemplatesResponse = models.DescribeServiceTemplatesResponse;
const DescribeRouteTablesRequest = models.DescribeRouteTablesRequest;
const ResetAttachCcnInstancesRequest = models.ResetAttachCcnInstancesRequest;
const CreateHaVipResponse = models.CreateHaVipResponse;
const DescribeSecurityGroupReferencesRequest = models.DescribeSecurityGroupReferencesRequest;
const DescribeVpcPrivateIpAddressesResponse = models.DescribeVpcPrivateIpAddressesResponse;
const ModifyReserveIpAddressRequest = models.ModifyReserveIpAddressRequest;
const ISPIPv6CidrBlock = models.ISPIPv6CidrBlock;
const DisableRoutesRequest = models.DisableRoutesRequest;
const DisassociateDirectConnectGatewayNatGatewayRequest = models.DisassociateDirectConnectGatewayNatGatewayRequest;
const ReleaseIPv6AddressesRequest = models.ReleaseIPv6AddressesRequest;
const DisassociateIPv6AddressResponse = models.DisassociateIPv6AddressResponse;
const DescribeAddressTemplateGroupsResponse = models.DescribeAddressTemplateGroupsResponse;
const ReleaseAddressesRequest = models.ReleaseAddressesRequest;
const CreateDirectConnectGatewayCcnRoutesRequest = models.CreateDirectConnectGatewayCcnRoutesRequest;
const CreateDirectConnectGatewayCcnRoutesResponse = models.CreateDirectConnectGatewayCcnRoutesResponse;
const CreateRouteTableRequest = models.CreateRouteTableRequest;
const MigrateNetworkInterfaceRequest = models.MigrateNetworkInterfaceRequest;
const DescribeCustomerGatewaysRequest = models.DescribeCustomerGatewaysRequest;
const DisableRoutesResponse = models.DisableRoutesResponse;
const ModifySnapshotPoliciesRequest = models.ModifySnapshotPoliciesRequest;
const ModifyAddressAttributeRequest = models.ModifyAddressAttributeRequest;
const DeleteAssistantCidrRequest = models.DeleteAssistantCidrRequest;
const ModifyVpcEndPointServiceWhiteListResponse = models.ModifyVpcEndPointServiceWhiteListResponse;
const SubnetInput = models.SubnetInput;
const DescribeNatGatewayDirectConnectGatewayRouteResponse = models.DescribeNatGatewayDirectConnectGatewayRouteResponse;
const EnableVpcEndPointConnectResponse = models.EnableVpcEndPointConnectResponse;
const CreateNetDetectResponse = models.CreateNetDetectResponse;
const InquiryPriceAllocateAddressesResponse = models.InquiryPriceAllocateAddressesResponse;
const DeleteCcnRequest = models.DeleteCcnRequest;
const ModifyLocalGatewayResponse = models.ModifyLocalGatewayResponse;
const AssociateNetworkInterfaceSecurityGroupsResponse = models.AssociateNetworkInterfaceSecurityGroupsResponse;
const EnableFlowLogsRequest = models.EnableFlowLogsRequest;
const ModifyVpnGatewayAttributeRequest = models.ModifyVpnGatewayAttributeRequest;
const CreateNatGatewayRequest = models.CreateNatGatewayRequest;
const DeleteNetDetectRequest = models.DeleteNetDetectRequest;
const IPSECOptionsSpecification = models.IPSECOptionsSpecification;
const CreateSnapshotPoliciesRequest = models.CreateSnapshotPoliciesRequest;
const UnassignIpv6AddressesRequest = models.UnassignIpv6AddressesRequest;
const CreateAndAttachNetworkInterfaceResponse = models.CreateAndAttachNetworkInterfaceResponse;
const ModifyCcnAttributeRequest = models.ModifyCcnAttributeRequest;
const ResourceStatistics = models.ResourceStatistics;
const DeleteSecurityGroupPoliciesResponse = models.DeleteSecurityGroupPoliciesResponse;
const CreateVpcEndPointServiceResponse = models.CreateVpcEndPointServiceResponse;
const ModifyNetworkAclAttributeRequest = models.ModifyNetworkAclAttributeRequest;
const SetVpnGatewaysRenewFlagResponse = models.SetVpnGatewaysRenewFlagResponse;
const DeleteVpnGatewayResponse = models.DeleteVpnGatewayResponse;
const DescribeHaVipsRequest = models.DescribeHaVipsRequest;
const SnapshotPolicy = models.SnapshotPolicy;
const InquiryPriceModifyAddressesBandwidthResponse = models.InquiryPriceModifyAddressesBandwidthResponse;
const UnassignPrivateIpAddressesResponse = models.UnassignPrivateIpAddressesResponse;
const Address = models.Address;
const VpnGateway = models.VpnGateway;
const ModifyAddressesBandwidthRequest = models.ModifyAddressesBandwidthRequest;
const EnableVpcEndPointConnectRequest = models.EnableVpcEndPointConnectRequest;
const EnableGatewayFlowMonitorResponse = models.EnableGatewayFlowMonitorResponse;
const Resource = models.Resource;
const CustomerGateway = models.CustomerGateway;
const AllocateAddressesResponse = models.AllocateAddressesResponse;
const DescribeVpnConnectionsResponse = models.DescribeVpnConnectionsResponse;
const BandwidthPackage = models.BandwidthPackage;
const ModifyVpcAttributeRequest = models.ModifyVpcAttributeRequest;
const ModifyNatGatewayDestinationIpPortTranslationNatRuleRequest = models.ModifyNatGatewayDestinationIpPortTranslationNatRuleRequest;
const CreateSecurityGroupPoliciesRequest = models.CreateSecurityGroupPoliciesRequest;
const ModifyVpnGatewayRoutesResponse = models.ModifyVpnGatewayRoutesResponse;
const ModifyRouteTableAttributeResponse = models.ModifyRouteTableAttributeResponse;
const ModifyIPv6AddressesBandwidthResponse = models.ModifyIPv6AddressesBandwidthResponse;
const DescribeSecurityGroupReferencesResponse = models.DescribeSecurityGroupReferencesResponse;
const DisableGatewayFlowMonitorRequest = models.DisableGatewayFlowMonitorRequest;
const CreateAddressTemplateGroupResponse = models.CreateAddressTemplateGroupResponse;
const DescribeBandwidthPackageQuotaResponse = models.DescribeBandwidthPackageQuotaResponse;
const DeleteServiceTemplateGroupRequest = models.DeleteServiceTemplateGroupRequest;
const DeleteNatGatewayResponse = models.DeleteNatGatewayResponse;
const AdjustPublicAddressRequest = models.AdjustPublicAddressRequest;
const CreateDirectConnectGatewayResponse = models.CreateDirectConnectGatewayResponse;
const ModifyVpcEndPointAttributeRequest = models.ModifyVpcEndPointAttributeRequest;
const ModifyBandwidthPackageBandwidthRequest = models.ModifyBandwidthPackageBandwidthRequest;
const DescribeTaskResultResponse = models.DescribeTaskResultResponse;
const DisassociateNetworkAclSubnetsRequest = models.DisassociateNetworkAclSubnetsRequest;
const ModifyAddressTemplateGroupAttributeRequest = models.ModifyAddressTemplateGroupAttributeRequest;
const ModifyServiceTemplateGroupAttributeRequest = models.ModifyServiceTemplateGroupAttributeRequest;
const DeleteVpcEndPointRequest = models.DeleteVpcEndPointRequest;
const InquiryPriceAllocateAddressesRequest = models.InquiryPriceAllocateAddressesRequest;
const CCN = models.CCN;
const NetworkAclQuintupleEntry = models.NetworkAclQuintupleEntry;
const InquirePriceCreateDirectConnectGatewayResponse = models.InquirePriceCreateDirectConnectGatewayResponse;
const AdjustPublicAddressResponse = models.AdjustPublicAddressResponse;
const RemoveBandwidthPackageResourcesResponse = models.RemoveBandwidthPackageResourcesResponse;
const DestinationIpPortTranslationNatRule = models.DestinationIpPortTranslationNatRule;
const CheckNetDetectStateResponse = models.CheckNetDetectStateResponse;
const CreateDefaultVpcRequest = models.CreateDefaultVpcRequest;
const DescribeSubnetsResponse = models.DescribeSubnetsResponse;
const DescribeCustomerGatewaysResponse = models.DescribeCustomerGatewaysResponse;
const CheckAssistantCidrResponse = models.CheckAssistantCidrResponse;
const DescribeVpcTaskResultResponse = models.DescribeVpcTaskResultResponse;
const InquiryPriceRenewVpnGatewayRequest = models.InquiryPriceRenewVpnGatewayRequest;
const EnableCcnRoutesResponse = models.EnableCcnRoutesResponse;
const ModifyVpnGatewayCcnRoutesResponse = models.ModifyVpnGatewayCcnRoutesResponse;
const DetachCcnInstancesResponse = models.DetachCcnInstancesResponse;
const ModifyServiceTemplateGroupAttributeResponse = models.ModifyServiceTemplateGroupAttributeResponse;
const DeleteNetworkAclQuintupleEntriesRequest = models.DeleteNetworkAclQuintupleEntriesRequest;
const DeleteSubnetRequest = models.DeleteSubnetRequest;
const DescribeAddressTemplateGroupsRequest = models.DescribeAddressTemplateGroupsRequest;
const DeleteRoutePolicyRequest = models.DeleteRoutePolicyRequest;
const DisassociateVpcEndPointSecurityGroupsResponse = models.DisassociateVpcEndPointSecurityGroupsResponse;
const DeleteSnapshotPoliciesResponse = models.DeleteSnapshotPoliciesResponse;
const AssociateNatGatewayAddressResponse = models.AssociateNatGatewayAddressResponse;
const RemoveBandwidthPackageResourcesRequest = models.RemoveBandwidthPackageResourcesRequest;
const VpngwCcnRoutes = models.VpngwCcnRoutes;
const RouteTable = models.RouteTable;
const DeleteNetworkInterfaceRequest = models.DeleteNetworkInterfaceRequest;
const InquiryPriceResetVpnGatewayInternetMaxBandwidthResponse = models.InquiryPriceResetVpnGatewayInternetMaxBandwidthResponse;
const DescribeVpcEndPointServiceWhiteListRequest = models.DescribeVpcEndPointServiceWhiteListRequest;
const DeleteAddressTemplateGroupResponse = models.DeleteAddressTemplateGroupResponse;
const ReplaceRoutesResponse = models.ReplaceRoutesResponse;
const ModifyLocalGatewayRequest = models.ModifyLocalGatewayRequest;
const DirectConnectGatewayCcnRoute = models.DirectConnectGatewayCcnRoute;
const DeleteHaVipRequest = models.DeleteHaVipRequest;
const CreateLocalGatewayResponse = models.CreateLocalGatewayResponse;
const ServicesInfo = models.ServicesInfo;
const MigratePrivateIpAddressRequest = models.MigratePrivateIpAddressRequest;
const DescribeServiceTemplatesRequest = models.DescribeServiceTemplatesRequest;
const DescribeSnapshotAttachedInstancesResponse = models.DescribeSnapshotAttachedInstancesResponse;
const RefreshDirectConnectGatewayRouteToNatGatewayResponse = models.RefreshDirectConnectGatewayRouteToNatGatewayResponse;
const DeleteReserveIpAddressesResponse = models.DeleteReserveIpAddressesResponse;
const DeleteRouteTableRequest = models.DeleteRouteTableRequest;
const SnapshotInstance = models.SnapshotInstance;
const CreateVpnGatewayRequest = models.CreateVpnGatewayRequest;
const DescribeVpcInstancesRequest = models.DescribeVpcInstancesRequest;
const DeleteVpcEndPointServiceWhiteListResponse = models.DeleteVpcEndPointServiceWhiteListResponse;
const DescribeSgSnapshotFileContentRequest = models.DescribeSgSnapshotFileContentRequest;
const CreateBandwidthPackageResponse = models.CreateBandwidthPackageResponse;
const ResetVpnConnectionRequest = models.ResetVpnConnectionRequest;
const ReleaseAddressesResponse = models.ReleaseAddressesResponse;
const AuditCrossBorderComplianceResponse = models.AuditCrossBorderComplianceResponse;
const InquiryPriceResetVpnGatewayInternetMaxBandwidthRequest = models.InquiryPriceResetVpnGatewayInternetMaxBandwidthRequest;
const DisableFlowLogsRequest = models.DisableFlowLogsRequest;
const ReplaceSecurityGroupPolicyResponse = models.ReplaceSecurityGroupPolicyResponse;
const EnableGatewayFlowMonitorRequest = models.EnableGatewayFlowMonitorRequest;
const ModifyPrivateIpAddressesAttributeResponse = models.ModifyPrivateIpAddressesAttributeResponse;
const ModifyHaVipAttributeResponse = models.ModifyHaVipAttributeResponse;
const CcnBandwidthInfo = models.CcnBandwidthInfo;
const DeleteSecurityGroupResponse = models.DeleteSecurityGroupResponse;
const DescribeReserveIpAddressesRequest = models.DescribeReserveIpAddressesRequest;
const DescribeAddressQuotaRequest = models.DescribeAddressQuotaRequest;
const BatchModifySnapshotPolicy = models.BatchModifySnapshotPolicy;
const AssignIpv6AddressesResponse = models.AssignIpv6AddressesResponse;
const CreateRoutesResponse = models.CreateRoutesResponse;
const DescribeSecurityGroupsResponse = models.DescribeSecurityGroupsResponse;
const CreateVpcEndPointServiceWhiteListRequest = models.CreateVpcEndPointServiceWhiteListRequest;
const DeleteNatGatewaySourceIpTranslationNatRuleRequest = models.DeleteNatGatewaySourceIpTranslationNatRuleRequest;
const ModifyVpnGatewayCcnRoutesRequest = models.ModifyVpnGatewayCcnRoutesRequest;
const DescribeGatewayFlowQosRequest = models.DescribeGatewayFlowQosRequest;
const ReplaceDirectConnectGatewayCcnRoutesResponse = models.ReplaceDirectConnectGatewayCcnRoutesResponse;
const DownloadCustomerGatewayConfigurationResponse = models.DownloadCustomerGatewayConfigurationResponse;
const ModifySecurityGroupPoliciesResponse = models.ModifySecurityGroupPoliciesResponse;
const ServiceTemplateSpecification = models.ServiceTemplateSpecification;
const DetachNetworkInterfaceRequest = models.DetachNetworkInterfaceRequest;
const ModifyIPv6AddressesAttributesRequest = models.ModifyIPv6AddressesAttributesRequest;
const ReserveIpAddressInfo = models.ReserveIpAddressInfo;
const AttachClassicLinkVpcResponse = models.AttachClassicLinkVpcResponse;
const CreateAddressTemplateRequest = models.CreateAddressTemplateRequest;
const DescribeNatGatewaysResponse = models.DescribeNatGatewaysResponse;
const NatDirectConnectGatewayRoute = models.NatDirectConnectGatewayRoute;
const NetworkAclQuintupleEntries = models.NetworkAclQuintupleEntries;
const AttachNetworkInterfaceRequest = models.AttachNetworkInterfaceRequest;
const DescribeCcnRoutesResponse = models.DescribeCcnRoutesResponse;
const AllocateIp6AddressesBandwidthRequest = models.AllocateIp6AddressesBandwidthRequest;
const SecurityGroup = models.SecurityGroup;
const DisableGatewayFlowMonitorResponse = models.DisableGatewayFlowMonitorResponse;
const DisassociateAddressResponse = models.DisassociateAddressResponse;
const DirectConnectSubnet = models.DirectConnectSubnet;
const DescribeVpnGatewayRoutesRequest = models.DescribeVpnGatewayRoutesRequest;
const GetCcnRegionBandwidthLimitsResponse = models.GetCcnRegionBandwidthLimitsResponse;
const DeleteRoutesRequest = models.DeleteRoutesRequest;
const AssociateAddressRequest = models.AssociateAddressRequest;
const CcnRegionBandwidthLimit = models.CcnRegionBandwidthLimit;
const DescribeRoutePolicyEntriesRequest = models.DescribeRoutePolicyEntriesRequest;
const VpcEndPointServiceUser = models.VpcEndPointServiceUser;
const ClassicLinkInstance = models.ClassicLinkInstance;
const DeleteLocalGatewayResponse = models.DeleteLocalGatewayResponse;
const NetworkInterfaceAttachment = models.NetworkInterfaceAttachment;
const SnapshotFileInfo = models.SnapshotFileInfo;
const ModifyNetworkInterfaceAttributeRequest = models.ModifyNetworkInterfaceAttributeRequest;
const ModifyHaVipAttributeRequest = models.ModifyHaVipAttributeRequest;
const ModifyAddressTemplateGroupAttributeResponse = models.ModifyAddressTemplateGroupAttributeResponse;
const DetachClassicLinkVpcResponse = models.DetachClassicLinkVpcResponse;
const UnassignPrivateIpAddressesRequest = models.UnassignPrivateIpAddressesRequest;
const DeleteVpnGatewayRoutesRequest = models.DeleteVpnGatewayRoutesRequest;
const Filter = models.Filter;
const ModifyNetDetectResponse = models.ModifyNetDetectResponse;
const CreateHaVipRequest = models.CreateHaVipRequest;
const Ipv6SubnetCidrBlock = models.Ipv6SubnetCidrBlock;
const EnableFlowLogsResponse = models.EnableFlowLogsResponse;
const DescribeAddressQuotaResponse = models.DescribeAddressQuotaResponse;
const CreateCustomerGatewayRequest = models.CreateCustomerGatewayRequest;
const DeleteSecurityGroupRequest = models.DeleteSecurityGroupRequest;
const CrossBorderCompliance = models.CrossBorderCompliance;
const CreateRouteTableResponse = models.CreateRouteTableResponse;
const CreateRoutePolicyEntriesResponse = models.CreateRoutePolicyEntriesResponse;
const DeleteDirectConnectGatewayRequest = models.DeleteDirectConnectGatewayRequest;
const DescribeDirectConnectGatewayCcnRoutesResponse = models.DescribeDirectConnectGatewayCcnRoutesResponse;
const ModifyPrivateIpAddressesAttributeRequest = models.ModifyPrivateIpAddressesAttributeRequest;
const ResetNatGatewayConnectionResponse = models.ResetNatGatewayConnectionResponse;
const AssociateNetworkInterfaceSecurityGroupsRequest = models.AssociateNetworkInterfaceSecurityGroupsRequest;
const DeleteVpnGatewayRoutesResponse = models.DeleteVpnGatewayRoutesResponse;
const CreateSecurityGroupRequest = models.CreateSecurityGroupRequest;
const ModifyCcnAttributeResponse = models.ModifyCcnAttributeResponse;
const RoutePolicyAssociation = models.RoutePolicyAssociation;
const DescribeClassicLinkInstancesRequest = models.DescribeClassicLinkInstancesRequest;
const ReleaseIp6AddressesBandwidthRequest = models.ReleaseIp6AddressesBandwidthRequest;
const CreateServiceTemplateResponse = models.CreateServiceTemplateResponse;
const DeleteNetworkInterfaceResponse = models.DeleteNetworkInterfaceResponse;
const DisableCcnRoutesResponse = models.DisableCcnRoutesResponse;
const DescribeCcnRegionBandwidthLimitsRequest = models.DescribeCcnRegionBandwidthLimitsRequest;
const ModifyReserveIpAddressResponse = models.ModifyReserveIpAddressResponse;
const CreateAssistantCidrResponse = models.CreateAssistantCidrResponse;
const CustomerGatewayVendor = models.CustomerGatewayVendor;
const DescribeAddressTemplatesRequest = models.DescribeAddressTemplatesRequest;
const ConflictSource = models.ConflictSource;
const EnableRoutesRequest = models.EnableRoutesRequest;
const DeleteTrafficPackagesResponse = models.DeleteTrafficPackagesResponse;
const DeleteCustomerGatewayRequest = models.DeleteCustomerGatewayRequest;
const DescribeAddressTemplatesResponse = models.DescribeAddressTemplatesResponse;
const Quota = models.Quota;
const WithdrawNotifyRoutesResponse = models.WithdrawNotifyRoutesResponse;
const ModifyIPv6AddressesAttributesResponse = models.ModifyIPv6AddressesAttributesResponse;
const DescribeNetworkInterfacesResponse = models.DescribeNetworkInterfacesResponse;
const DeleteNetworkAclResponse = models.DeleteNetworkAclResponse;
const DeleteNetworkAclQuintupleEntriesResponse = models.DeleteNetworkAclQuintupleEntriesResponse;
const DescribeServiceTemplateGroupsRequest = models.DescribeServiceTemplateGroupsRequest;
const CreateSecurityGroupWithPoliciesRequest = models.CreateSecurityGroupWithPoliciesRequest;
const CreateVpcRequest = models.CreateVpcRequest;
const DescribeSubnetResourceDashboardResponse = models.DescribeSubnetResourceDashboardResponse;
const DeleteServiceTemplateRequest = models.DeleteServiceTemplateRequest;
const DescribeSecurityGroupAssociationStatisticsRequest = models.DescribeSecurityGroupAssociationStatisticsRequest;
const NotifyRoutesResponse = models.NotifyRoutesResponse;
const Route = models.Route;
const ModifySubnetAttributeRequest = models.ModifySubnetAttributeRequest;
const DescribeBandwidthPackageQuotaRequest = models.DescribeBandwidthPackageQuotaRequest;
const DeleteVpcResponse = models.DeleteVpcResponse;
const InstanceChargePrepaid = models.InstanceChargePrepaid;
const CreateRoutePolicyAssociationsResponse = models.CreateRoutePolicyAssociationsResponse;
const AddTemplateMemberRequest = models.AddTemplateMemberRequest;
const DescribeVpcEndPointServiceWhiteListResponse = models.DescribeVpcEndPointServiceWhiteListResponse;
const AcceptAttachCcnInstancesResponse = models.AcceptAttachCcnInstancesResponse;
const DescribeUsedIpAddressResponse = models.DescribeUsedIpAddressResponse;
const AddressInfo = models.AddressInfo;
const AuditCrossBorderComplianceRequest = models.AuditCrossBorderComplianceRequest;
const DescribeNetDetectsResponse = models.DescribeNetDetectsResponse;


/**
 * vpc client
 * @class
 */
class VpcClient extends AbstractClient {

    constructor(credential, region, profile) {
        super("vpc.intl.tencentcloudapi.com", "2017-03-12", credential, region, profile);
    }
    
    /**
     * View VPC resources.
     * @param {DescribeVpcResourceDashboardRequest} req
     * @param {function(string, DescribeVpcResourceDashboardResponse):void} cb
     * @public
     */
    DescribeVpcResourceDashboard(req, cb) {
        let resp = new DescribeVpcResourceDashboardResponse();
        this.request("DescribeVpcResourceDashboard", req, resp, cb);
    }

    /**
     * This API is used to download VPN tunnel configurations.
     * @param {DownloadCustomerGatewayConfigurationRequest} req
     * @param {function(string, DownloadCustomerGatewayConfigurationResponse):void} cb
     * @public
     */
    DownloadCustomerGatewayConfiguration(req, cb) {
        let resp = new DownloadCustomerGatewayConfigurationResponse();
        this.request("DownloadCustomerGatewayConfiguration", req, resp, cb);
    }

    /**
     * This API (DescribeCustomerGateways) is used to query the customer gateway list.
     * @param {DescribeCustomerGatewaysRequest} req
     * @param {function(string, DescribeCustomerGatewaysResponse):void} cb
     * @public
     */
    DescribeCustomerGateways(req, cb) {
        let resp = new DescribeCustomerGatewaysResponse();
        this.request("DescribeCustomerGateways", req, resp, cb);
    }

    /**
     * This API is used to modify a NAT gateway's SNAT forwarding rules.
     * @param {ModifyNatGatewaySourceIpTranslationNatRuleRequest} req
     * @param {function(string, ModifyNatGatewaySourceIpTranslationNatRuleResponse):void} cb
     * @public
     */
    ModifyNatGatewaySourceIpTranslationNatRule(req, cb) {
        let resp = new ModifyNatGatewaySourceIpTranslationNatRuleResponse();
        this.request("ModifyNatGatewaySourceIpTranslationNatRule", req, resp, cb);
    }

    /**
     * This API (InquiryPriceRenewVpnGateway) is used to query the price for VPN gateway renewal. Currently, only querying prices for IPSEC-type gateways is supported.
     * @param {InquiryPriceRenewVpnGatewayRequest} req
     * @param {function(string, InquiryPriceRenewVpnGatewayResponse):void} cb
     * @public
     */
    InquiryPriceRenewVpnGateway(req, cb) {
        let resp = new InquiryPriceRenewVpnGatewayResponse();
        this.request("InquiryPriceRenewVpnGateway", req, resp, cb);
    }

    /**
     * This API is used to change the public IP of a CVM or the EIP of the associated bandwidth package.
     * @param {AdjustPublicAddressRequest} req
     * @param {function(string, AdjustPublicAddressResponse):void} cb
     * @public
     */
    AdjustPublicAddress(req, cb) {
        let resp = new AdjustPublicAddressResponse();
        this.request("AdjustPublicAddress", req, resp, cb);
    }

    /**
     * This API is used to create a flow log.
     * @param {CreateFlowLogRequest} req
     * @param {function(string, CreateFlowLogResponse):void} cb
     * @public
     */
    CreateFlowLog(req, cb) {
        let resp = new CreateFlowLogResponse();
        this.request("CreateFlowLog", req, resp, cb);
    }

    /**
     * This API is used to modify the attributes of a NAT gateway.
     * @param {ModifyNatGatewayAttributeRequest} req
     * @param {function(string, ModifyNatGatewayAttributeResponse):void} cb
     * @public
     */
    ModifyNatGatewayAttribute(req, cb) {
        let resp = new ModifyNatGatewayAttributeResponse();
        this.request("ModifyNatGatewayAttribute", req, resp, cb);
    }

    /**
     * This API is used to query the EIP async job execution results.
     * @param {DescribeTaskResultRequest} req
     * @param {function(string, DescribeTaskResultResponse):void} cb
     * @public
     */
    DescribeTaskResult(req, cb) {
        let resp = new DescribeTaskResultResponse();
        this.request("DescribeTaskResult", req, resp, cb);
    }

    /**
     * This API is used to create a <a href="https://intl.cloud.tencent.com/document/product/215/20088?from_cn_redirect=1">network ACL</a>.
* The inbound and outbound rules for a new network ACL are "Deny All" by default. You need to call `ModifyNetworkAclEntries` to set rules for the new network ACL as needed.
     * @param {CreateNetworkAclRequest} req
     * @param {function(string, CreateNetworkAclResponse):void} cb
     * @public
     */
    CreateNetworkAcl(req, cb) {
        let resp = new CreateNetworkAclResponse();
        this.request("CreateNetworkAcl", req, resp, cb);
    }

    /**
     * This API (DescribeServiceTemplateGroups) is used to query a protocol port template group.
     * @param {DescribeServiceTemplateGroupsRequest} req
     * @param {function(string, DescribeServiceTemplateGroupsResponse):void} cb
     * @public
     */
    DescribeServiceTemplateGroups(req, cb) {
        let resp = new DescribeServiceTemplateGroupsResponse();
        this.request("DescribeServiceTemplateGroups", req, resp, cb);
    }

    /**
     * This API is used to query route tables.
     * @param {DescribeRouteTablesRequest} req
     * @param {function(string, DescribeRouteTablesResponse):void} cb
     * @public
     */
    DescribeRouteTables(req, cb) {
        let resp = new DescribeRouteTablesResponse();
        this.request("DescribeRouteTables", req, resp, cb);
    }

    /**
     * This API is used to create a [device bandwidth package](https://intl.cloud.tencent.com/document/product/684/15245?from_cn_redirect=1#bwptype) or an [IP bandwidth package](https://intl.cloud.tencent.com/document/product/684/15245?from_cn_redirect=1#bwptype).
     * @param {CreateBandwidthPackageRequest} req
     * @param {function(string, CreateBandwidthPackageResponse):void} cb
     * @public
     */
    CreateBandwidthPackage(req, cb) {
        let resp = new CreateBandwidthPackageResponse();
        this.request("CreateBandwidthPackage", req, resp, cb);
    }

    /**
     * This API is used to delete a flow log.
     * @param {DeleteFlowLogRequest} req
     * @param {function(string, DeleteFlowLogResponse):void} cb
     * @public
     */
    DeleteFlowLog(req, cb) {
        let resp = new DeleteFlowLogResponse();
        this.request("DeleteFlowLog", req, resp, cb);
    }

    /**
     * This API is used to create a route table.
* After the VPC instance has been created, the system creates a default route table with which all newly created subnets will be associated. By default, you can use this route table to manage your routing policies. If you have multiple routing policies, you can call the API for creating route tables to create more route tables to manage these routing policies.
* You can bind a tag when creating a route table. The tag list in the response indicates the tags that have been successfully added.
     * @param {CreateRouteTableRequest} req
     * @param {function(string, CreateRouteTableResponse):void} cb
     * @public
     */
    CreateRouteTable(req, cb) {
        let resp = new CreateRouteTableResponse();
        this.request("CreateRouteTable", req, resp, cb);
    }

    /**
     * This API is used to assign IPv6 ranges.
* To use this API, you must already have a VPC instance. If you do not have a VPC instance yet, use the <a href="https://intl.cloud.tencent.com/document/api/215/15774?from_cn_redirect=1" title="CreateVpc" target="_blank">CreateVpc</a> API to create one.
* Each VPC can apply for only one IPv6 range.
     * @param {AssignIpv6CidrBlockRequest} req
     * @param {function(string, AssignIpv6CidrBlockResponse):void} cb
     * @public
     */
    AssignIpv6CidrBlock(req, cb) {
        let resp = new AssignIpv6CidrBlockResponse();
        this.request("AssignIpv6CidrBlock", req, resp, cb);
    }

    /**
     * This API is used to delete a network ACL.
     * @param {DeleteNetworkAclRequest} req
     * @param {function(string, DeleteNetworkAclResponse):void} cb
     * @public
     */
    DeleteNetworkAcl(req, cb) {
        let resp = new DeleteNetworkAclResponse();
        this.request("DeleteNetworkAcl", req, resp, cb);
    }

    /**
     * This API is used to delete the endpoint service allowlist.
     * @param {DeleteVpcEndPointServiceWhiteListRequest} req
     * @param {function(string, DeleteVpcEndPointServiceWhiteListResponse):void} cb
     * @public
     */
    DeleteVpcEndPointServiceWhiteList(req, cb) {
        let resp = new DeleteVpcEndPointServiceWhiteListResponse();
        this.request("DeleteVpcEndPointServiceWhiteList", req, resp, cb);
    }

    /**
     * This API is used to query the array of objects of a NAT gateway's port forwarding rules.
     * @param {DescribeNatGatewayDestinationIpPortTranslationNatRulesRequest} req
     * @param {function(string, DescribeNatGatewayDestinationIpPortTranslationNatRulesResponse):void} cb
     * @public
     */
    DescribeNatGatewayDestinationIpPortTranslationNatRules(req, cb) {
        let resp = new DescribeNatGatewayDestinationIpPortTranslationNatRulesResponse();
        this.request("DescribeNatGatewayDestinationIpPortTranslationNatRules", req, resp, cb);
    }

    /**
     * This API is used to disassociate a network ACL from subnets in a VPC instance.
     * @param {DisassociateNetworkAclSubnetsRequest} req
     * @param {function(string, DisassociateNetworkAclSubnetsResponse):void} cb
     * @public
     */
    DisassociateNetworkAclSubnets(req, cb) {
        let resp = new DisassociateNetworkAclSubnetsResponse();
        this.request("DisassociateNetworkAclSubnets", req, resp, cb);
    }

    /**
     * This API is used to create route reception policy bindings (the binding relationship between policy instances and route table instances as well as set priorities).
     * @param {CreateRoutePolicyAssociationsRequest} req
     * @param {function(string, CreateRoutePolicyAssociationsResponse):void} cb
     * @public
     */
    CreateRoutePolicyAssociations(req, cb) {
        let resp = new CreateRoutePolicyAssociationsResponse();
        this.request("CreateRoutePolicyAssociations", req, resp, cb);
    }

    /**
     * This API (DisassociateNetworkInterfaceSecurityGroups) is used to detach (or fully detach if possible) a security group from an ENI.
     * @param {DisassociateNetworkInterfaceSecurityGroupsRequest} req
     * @param {function(string, DisassociateNetworkInterfaceSecurityGroupsResponse):void} cb
     * @public
     */
    DisassociateNetworkInterfaceSecurityGroups(req, cb) {
        let resp = new DisassociateNetworkInterfaceSecurityGroupsResponse();
        this.request("DisassociateNetworkInterfaceSecurityGroups", req, resp, cb);
    }

    /**
     * This API is used to adjust the network billing mode of an EIP. Please note that it's available to users whose network fees are billed on IPs but not CVMs.
* The network billing mode can be switched between `BANDWIDTH_PREPAID_BY_MONTH` and `TRAFFIC_POSTPAID_BY_HOUR`.
* The network billing mode for each EIP be changed for up to twice.
     * @param {ModifyAddressInternetChargeTypeRequest} req
     * @param {function(string, ModifyAddressInternetChargeTypeResponse):void} cb
     * @public
     */
    ModifyAddressInternetChargeType(req, cb) {
        let resp = new ModifyAddressInternetChargeTypeResponse();
        this.request("ModifyAddressInternetChargeType", req, resp, cb);
    }

    /**
     * This API (DescribeCcnAttachedInstances) is used to query the network instances associated with the CCN instance.
     * @param {DescribeCcnAttachedInstancesRequest} req
     * @param {function(string, DescribeCcnAttachedInstancesResponse):void} cb
     * @public
     */
    DescribeCcnAttachedInstances(req, cb) {
        let resp = new DescribeCcnAttachedInstancesResponse();
        this.request("DescribeCcnAttachedInstances", req, resp, cb);
    }

    /**
     * This API (ResetRoutes) is used to reset the name of a route table and all its routing policies.<br />
Note: When this API is called, all routing policies in the current route table are deleted before new routing policies are saved, which may incur network interruption.
     * @param {ResetRoutesRequest} req
     * @param {function(string, ResetRoutesResponse):void} cb
     * @public
     */
    ResetRoutes(req, cb) {
        let resp = new ResetRoutesResponse();
        this.request("ResetRoutes", req, resp, cb);
    }

    /**
     * This API is used to modify the name of an EIPv6 instance.

- You can modify the name of both EIPv6 and traditional EIPv6 instances.
     * @param {ModifyIPv6AddressesAttributesRequest} req
     * @param {function(string, ModifyIPv6AddressesAttributesResponse):void} cb
     * @public
     */
    ModifyIPv6AddressesAttributes(req, cb) {
        let resp = new ModifyIPv6AddressesAttributesResponse();
        this.request("ModifyIPv6AddressesAttributes", req, resp, cb);
    }

    /**
     * This API (DescribeNetworkInterfaceLimit) is used to query the ENI quota based on the ID of CVM instance or ENI. It returns the ENI quota to which the CVM instance can be bound and the IP address quota that can be allocated to the ENI.
     * @param {DescribeNetworkInterfaceLimitRequest} req
     * @param {function(string, DescribeNetworkInterfaceLimitResponse):void} cb
     * @public
     */
    DescribeNetworkInterfaceLimit(req, cb) {
        let resp = new DescribeNetworkInterfaceLimitResponse();
        this.request("DescribeNetworkInterfaceLimit", req, resp, cb);
    }

    /**
     * This API is used to enable specified snapshot policies. 
     * @param {EnableSnapshotPoliciesRequest} req
     * @param {function(string, EnableSnapshotPoliciesResponse):void} cb
     * @public
     */
    EnableSnapshotPolicies(req, cb) {
        let resp = new EnableSnapshotPoliciesResponse();
        this.request("EnableSnapshotPolicies", req, resp, cb);
    }

    /**
     * This API (DescribeNetDetects) is used to query the list of network detection instances.
     * @param {DescribeNetDetectsRequest} req
     * @param {function(string, DescribeNetDetectsResponse):void} cb
     * @public
     */
    DescribeNetDetects(req, cb) {
        let resp = new DescribeNetDetectsResponse();
        this.request("DescribeNetDetects", req, resp, cb);
    }

    /**
     * This API is used to modify the route reception policy attribute.
     * @param {ModifyRoutePolicyAttributeRequest} req
     * @param {function(string, ModifyRoutePolicyAttributeResponse):void} cb
     * @public
     */
    ModifyRoutePolicyAttribute(req, cb) {
        let resp = new ModifyRoutePolicyAttributeResponse();
        this.request("ModifyRoutePolicyAttribute", req, resp, cb);
    }

    /**
     * This API is used to modify the in/outbound rules of the network ACL quintuple. In the `NetworkAclQuintupleEntrySet` parameters, `NetworkAclQuintupleEntryId` is required for `NetworkAclQuintupleEntry`.
     * @param {ModifyNetworkAclQuintupleEntriesRequest} req
     * @param {function(string, ModifyNetworkAclQuintupleEntriesResponse):void} cb
     * @public
     */
    ModifyNetworkAclQuintupleEntries(req, cb) {
        let resp = new ModifyNetworkAclQuintupleEntriesResponse();
        this.request("ModifyNetworkAclQuintupleEntries", req, resp, cb);
    }

    /**
     * This API (DescribeVpcPrivateIpAddresses) is used to query the private IP information of a VPC.<br />
This API is used to query only the information of IP addresses that are already in use. When querying IPs that have not yet been used, this API will not report an error, but the IPs will not appear in the returned results.
     * @param {DescribeVpcPrivateIpAddressesRequest} req
     * @param {function(string, DescribeVpcPrivateIpAddressesResponse):void} cb
     * @public
     */
    DescribeVpcPrivateIpAddresses(req, cb) {
        let resp = new DescribeVpcPrivateIpAddressesResponse();
        this.request("DescribeVpcPrivateIpAddresses", req, resp, cb);
    }

    /**
     * This API is used to query the traffic monitoring details of the gateway.
* You can only use this API to query a single gateway instance, which means you must pass in only one of `VpnId`, `DirectConnectGatewayId`, `PeeringConnectionId`, or `NatId`.
* If the gateway has traffic, but no data is returned when this API is called, please check whether gateway traffic monitoring has been enabled in the corresponding gateway details page in the console.
     * @param {DescribeGatewayFlowMonitorDetailRequest} req
     * @param {function(string, DescribeGatewayFlowMonitorDetailResponse):void} cb
     * @public
     */
    DescribeGatewayFlowMonitorDetail(req, cb) {
        let resp = new DescribeGatewayFlowMonitorDetailResponse();
        this.request("DescribeGatewayFlowMonitorDetail", req, resp, cb);
    }

    /**
     * This API is used to associate a snapshot policy with specified instances.
     * @param {AttachSnapshotInstancesRequest} req
     * @param {function(string, AttachSnapshotInstancesResponse):void} cb
     * @public
     */
    AttachSnapshotInstances(req, cb) {
        let resp = new AttachSnapshotInstancesResponse();
        this.request("AttachSnapshotInstances", req, resp, cb);
    }

    /**
     * This API is used to release the IPv6 addresses of an ENI. <br />
This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {UnassignIpv6AddressesRequest} req
     * @param {function(string, UnassignIpv6AddressesResponse):void} cb
     * @public
     */
    UnassignIpv6Addresses(req, cb) {
        let resp = new UnassignIpv6AddressesResponse();
        this.request("UnassignIpv6Addresses", req, resp, cb);
    }

    /**
     * This API is used to bind a direct connect gateway with a NAT gateway,  and direct its default route to the NAT Gateway.
     * @param {AssociateDirectConnectGatewayNatGatewayRequest} req
     * @param {function(string, AssociateDirectConnectGatewayNatGatewayResponse):void} cb
     * @public
     */
    AssociateDirectConnectGatewayNatGateway(req, cb) {
        let resp = new AssociateDirectConnectGatewayNatGatewayResponse();
        this.request("AssociateDirectConnectGatewayNatGateway", req, resp, cb);
    }

    /**
     * This API is used to delete a VPN tunnel.
     * @param {DeleteVpnConnectionRequest} req
     * @param {function(string, DeleteVpnConnectionResponse):void} cb
     * @public
     */
    DeleteVpnConnection(req, cb) {
        let resp = new DeleteVpnConnectionResponse();
        this.request("DeleteVpnConnection", req, resp, cb);
    }

    /**
     * This API is used to delete snapshot policies.
     * @param {DeleteSnapshotPoliciesRequest} req
     * @param {function(string, DeleteSnapshotPoliciesResponse):void} cb
     * @public
     */
    DeleteSnapshotPolicies(req, cb) {
        let resp = new DeleteSnapshotPoliciesResponse();
        this.request("DeleteSnapshotPolicies", req, resp, cb);
    }

    /**
     * This API is used to convert a common public IP into an [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1) (EIP for short).
* Tencent Cloud limits the number of times that a user can unbind EIPs and reassign public IPs in each region per day. For more information, see product introduction of [Elastic IP](https://intl.cloud.tencent.com/document/product/213/5733?from_cn_redirect=1). The preceding quota can be obtained through the API [DescribeAddressQuota](https://intl.cloud.tencent.com/document/product/215/16701).
     * @param {TransformAddressRequest} req
     * @param {function(string, TransformAddressResponse):void} cb
     * @public
     */
    TransformAddress(req, cb) {
        let resp = new TransformAddressResponse();
        this.request("TransformAddress", req, resp, cb);
    }

    /**
     * This API is used to bind an EIPv6 instance to the private IPv6 address configured on the CVM or ENI.

- Binding an EIPv6 to the CVM essentially indicates binding the EIPv6 to the private IPv6 address configured on the ENI of the CVM.
- Before binding an EIPv6 to the private IPv6 of a specified ENI, ensure that the private IPv6 address is unbound before the binding operation is performed.
     * @param {AssociateIPv6AddressRequest} req
     * @param {function(string, AssociateIPv6AddressResponse):void} cb
     * @public
     */
    AssociateIPv6Address(req, cb) {
        let resp = new AssociateIPv6AddressResponse();
        this.request("AssociateIPv6Address", req, resp, cb);
    }

    /**
     * This API (ModifyAddressTemplateGroupAttribute) is used to modify an IP address template group.
     * @param {ModifyAddressTemplateGroupAttributeRequest} req
     * @param {function(string, ModifyAddressTemplateGroupAttributeResponse):void} cb
     * @public
     */
    ModifyAddressTemplateGroupAttribute(req, cb) {
        let resp = new ModifyAddressTemplateGroupAttributeResponse();
        this.request("ModifyAddressTemplateGroupAttribute", req, resp, cb);
    }

    /**
     * This API (DescribeCustomerGatewayVendors) is used to query the information of supported customer gateway vendors.
     * @param {DescribeCustomerGatewayVendorsRequest} req
     * @param {function(string, DescribeCustomerGatewayVendorsResponse):void} cb
     * @public
     */
    DescribeCustomerGatewayVendors(req, cb) {
        let resp = new DescribeCustomerGatewayVendorsResponse();
        this.request("DescribeCustomerGatewayVendors", req, resp, cb);
    }

    /**
     * This API (DescribeAddresses) is used to query the information of one or multiple [Elastic IPs](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1).
* If the parameter is empty, a number (as specified by the `Limit`, the default value is 20) of EIPs will be returned.
     * @param {DescribeAddressesRequest} req
     * @param {function(string, DescribeAddressesResponse):void} cb
     * @public
     */
    DescribeAddresses(req, cb) {
        let resp = new DescribeAddressesResponse();
        this.request("DescribeAddresses", req, resp, cb);
    }

    /**
     * This API is used to modify the bandwidth cap of an EIPv6 instance.
     * @param {ModifyIPv6AddressesBandwidthRequest} req
     * @param {function(string, ModifyIPv6AddressesBandwidthResponse):void} cb
     * @public
     */
    ModifyIPv6AddressesBandwidth(req, cb) {
        let resp = new ModifyIPv6AddressesBandwidthResponse();
        this.request("ModifyIPv6AddressesBandwidth", req, resp, cb);
    }

    /**
     * This API (ReplaceSecurityGroupPolicy) is used to replace a single security group policy (SecurityGroupPolicy).
Only one policy in a single direction can be replaced in each request, and the PolicyIndex parameter must be specified.
     * @param {ReplaceSecurityGroupPolicyRequest} req
     * @param {function(string, ReplaceSecurityGroupPolicyResponse):void} cb
     * @public
     */
    ReplaceSecurityGroupPolicy(req, cb) {
        let resp = new ReplaceSecurityGroupPolicyResponse();
        this.request("ReplaceSecurityGroupPolicy", req, resp, cb);
    }

    /**
     * This API is used to query the execution result of a VPC task.
     * @param {DescribeVpcTaskResultRequest} req
     * @param {function(string, DescribeVpcTaskResultResponse):void} cb
     * @public
     */
    DescribeVpcTaskResult(req, cb) {
        let resp = new DescribeVpcTaskResultResponse();
        this.request("DescribeVpcTaskResult", req, resp, cb);
    }

    /**
     * This API is used to delete the local gateway of a CDC instance.
     * @param {DeleteLocalGatewayRequest} req
     * @param {function(string, DeleteLocalGatewayResponse):void} cb
     * @public
     */
    DeleteLocalGateway(req, cb) {
        let resp = new DeleteLocalGatewayResponse();
        this.request("DeleteLocalGateway", req, resp, cb);
    }

    /**
     * This API is used to modify (add or delete) the inbound and outbound rules of a network ACL. In `NetworkAclEntrySet` parameters,
* Passing in the new inbound/outbound rules will reset the original rules.
* Passing in the inbound rules will only reset the original inbound rules and not affect the original outbound rules, and vice versa.
     * @param {ModifyNetworkAclEntriesRequest} req
     * @param {function(string, ModifyNetworkAclEntriesResponse):void} cb
     * @public
     */
    ModifyNetworkAclEntries(req, cb) {
        let resp = new ModifyNetworkAclEntriesResponse();
        this.request("ModifyNetworkAclEntries", req, resp, cb);
    }

    /**
     * This API is used to determine whether to accept the request of connecting with an endpoint.
     * @param {EnableVpcEndPointConnectRequest} req
     * @param {function(string, EnableVpcEndPointConnectResponse):void} cb
     * @public
     */
    EnableVpcEndPointConnect(req, cb) {
        let resp = new EnableVpcEndPointConnectResponse();
        this.request("EnableVpcEndPointConnect", req, resp, cb);
    }

    /**
     * This API (DetachCcnInstances) is used to unbind a specified network instance from a CCN instance.<br />
After unbinding the network instance, the corresponding routing policy will also be deleted.
     * @param {DetachCcnInstancesRequest} req
     * @param {function(string, DetachCcnInstancesResponse):void} cb
     * @public
     */
    DetachCcnInstances(req, cb) {
        let resp = new DetachCcnInstancesResponse();
        this.request("DetachCcnInstances", req, resp, cb);
    }

    /**
     * This API is used to bind an EIP to a NAT gateway.
     * @param {AssociateNatGatewayAddressRequest} req
     * @param {function(string, AssociateNatGatewayAddressResponse):void} cb
     * @public
     */
    AssociateNatGatewayAddress(req, cb) {
        let resp = new AssociateNatGatewayAddressResponse();
        this.request("AssociateNatGatewayAddress", req, resp, cb);
    }

    /**
     * This API (ModifyPrivateIpAddressesAttribute) is used to modify the private IP attributes of an ENI.
     * @param {ModifyPrivateIpAddressesAttributeRequest} req
     * @param {function(string, ModifyPrivateIpAddressesAttributeResponse):void} cb
     * @public
     */
    ModifyPrivateIpAddressesAttribute(req, cb) {
        let resp = new ModifyPrivateIpAddressesAttributeResponse();
        this.request("ModifyPrivateIpAddressesAttribute", req, resp, cb);
    }

    /**
     * This API is used to modify endpoint attributes.
     * @param {ModifyVpcEndPointAttributeRequest} req
     * @param {function(string, ModifyVpcEndPointAttributeResponse):void} cb
     * @public
     */
    ModifyVpcEndPointAttribute(req, cb) {
        let resp = new ModifyVpcEndPointAttributeResponse();
        this.request("ModifyVpcEndPointAttribute", req, resp, cb);
    }

    /**
     * This API is used to query VPN gateway routes.
     * @param {DescribeVpnGatewayRoutesRequest} req
     * @param {function(string, DescribeVpnGatewayRoutesResponse):void} cb
     * @public
     */
    DescribeVpnGatewayRoutes(req, cb) {
        let resp = new DescribeVpnGatewayRoutesResponse();
        this.request("DescribeVpnGatewayRoutes", req, resp, cb);
    }

    /**
     * This API is used to modify VPN gateway routes.
     * @param {ModifyVpnGatewayRoutesRequest} req
     * @param {function(string, ModifyVpnGatewayRoutesResponse):void} cb
     * @public
     */
    ModifyVpnGatewayRoutes(req, cb) {
        let resp = new ModifyVpnGatewayRoutesResponse();
        this.request("ModifyVpnGatewayRoutes", req, resp, cb);
    }

    /**
     * This API is used to batch modify security group policies.
Policies to modify must be in the same direction. `PolicyIndex` must be specified.
     * @param {ReplaceSecurityGroupPoliciesRequest} req
     * @param {function(string, ReplaceSecurityGroupPoliciesResponse):void} cb
     * @public
     */
    ReplaceSecurityGroupPolicies(req, cb) {
        let resp = new ReplaceSecurityGroupPoliciesResponse();
        this.request("ReplaceSecurityGroupPolicies", req, resp, cb);
    }

    /**
     * This API is used to modify the binding Priority (Priority) based on the route reception policy instance ID (RoutePolicyId) and route table instance ID (RouteTableId), supporting batch modification.
     * @param {ReplaceRoutePolicyAssociationsRequest} req
     * @param {function(string, ReplaceRoutePolicyAssociationsResponse):void} cb
     * @public
     */
    ReplaceRoutePolicyAssociations(req, cb) {
        let resp = new ReplaceRoutePolicyAssociationsResponse();
        this.request("ReplaceRoutePolicyAssociations", req, resp, cb);
    }

    /**
     * This API is used to unbind an endpoint from a security group.
     * @param {DisassociateVpcEndPointSecurityGroupsRequest} req
     * @param {function(string, DisassociateVpcEndPointSecurityGroupsResponse):void} cb
     * @public
     */
    DisassociateVpcEndPointSecurityGroups(req, cb) {
        let resp = new DisassociateVpcEndPointSecurityGroupsResponse();
        this.request("DisassociateVpcEndPointSecurityGroups", req, resp, cb);
    }

    /**
     * This API is used to delete a route table.
     * @param {DeleteRouteTableRequest} req
     * @param {function(string, DeleteRouteTableResponse):void} cb
     * @public
     */
    DeleteRouteTable(req, cb) {
        let resp = new DeleteRouteTableResponse();
        this.request("DeleteRouteTable", req, resp, cb);
    }

    /**
     * This API is used to delete a bandwidth package resource, including [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1), [Cloud Load Balancer](https://intl.cloud.tencent.com/document/product/214/517?from_cn_redirect=1), and so on.
     * @param {RemoveBandwidthPackageResourcesRequest} req
     * @param {function(string, RemoveBandwidthPackageResourcesResponse):void} cb
     * @public
     */
    RemoveBandwidthPackageResources(req, cb) {
        let resp = new RemoveBandwidthPackageResourcesResponse();
        this.request("RemoveBandwidthPackageResources", req, resp, cb);
    }

    /**
     * This API is used to create a security group with the same rule configurations as an existing security group. The cloning only copies the security group and its rules, but not the security group tags.
     * @param {CloneSecurityGroupRequest} req
     * @param {function(string, CloneSecurityGroupResponse):void} cb
     * @public
     */
    CloneSecurityGroup(req, cb) {
        let resp = new CloneSecurityGroupResponse();
        this.request("CloneSecurityGroup", req, resp, cb);
    }

    /**
     * This API is used to apply for private IPs for an ENI.
* An ENI can only be bound with a limited number of IP addresses. For more information about resource limits, see <a href="/document/product/576/18527">ENI Use Limits</a>.
* You can apply for a specified private IP. It cannot be a primary IP because the primary IP already exists and cannot be modified. The private IP address must be an idle IP in the subnet to which the ENI belongs.
* You can apply for more than one secondary private IP on the ENI. The API will return the specified number of secondary private IPs in the subnet IP range.
>?This API is async. You can call the [`DescribeVpcTaskResult`](https://intl.cloud.tencent.com/document/api/215/59037?from_cn_redirect=1) API to query the task result. When the task is completed, you can continue other tasks.
>
     * @param {AssignPrivateIpAddressesRequest} req
     * @param {function(string, AssignPrivateIpAddressesResponse):void} cb
     * @public
     */
    AssignPrivateIpAddresses(req, cb) {
        let resp = new AssignPrivateIpAddressesResponse();
        this.request("AssignPrivateIpAddresses", req, resp, cb);
    }

    /**
     * This API is used to query the endpoint service list.
     * @param {DescribeVpcEndPointServiceRequest} req
     * @param {function(string, DescribeVpcEndPointServiceResponse):void} cb
     * @public
     */
    DescribeVpcEndPointService(req, cb) {
        let resp = new DescribeVpcEndPointServiceResponse();
        this.request("DescribeVpcEndPointService", req, resp, cb);
    }

    /**
     * This API is used to modify the attributes of the endpoint service allowlist.
     * @param {ModifyVpcEndPointServiceWhiteListRequest} req
     * @param {function(string, ModifyVpcEndPointServiceWhiteListResponse):void} cb
     * @public
     */
    ModifyVpcEndPointServiceWhiteList(req, cb) {
        let resp = new ModifyVpcEndPointServiceWhiteListResponse();
        this.request("ModifyVpcEndPointServiceWhiteList", req, resp, cb);
    }

    /**
     * This API is used to refresh the route between a NAT gateway and  Direct Connect and update the associated route table.
     * @param {RefreshDirectConnectGatewayRouteToNatGatewayRequest} req
     * @param {function(string, RefreshDirectConnectGatewayRouteToNatGatewayResponse):void} cb
     * @public
     */
    RefreshDirectConnectGatewayRouteToNatGateway(req, cb) {
        let resp = new RefreshDirectConnectGatewayRouteToNatGatewayResponse();
        this.request("RefreshDirectConnectGatewayRouteToNatGateway", req, resp, cb);
    }

    /**
     * This API is used to create an ENI and bind it to a CVM.
* You can specify private IP addresses and a primary IP when creating an ENI. The specified private IP must be idle and in the same subnet as the ENI.
* When creating an ENI, you can specify the number of private IPs that you want to apply for. The system will randomly generate private IP addresses.
* The number of IPs bound with an ENI is limited. For more information, see <a href="/document/product/576/18527">ENI Use Limits</a>.
* You can bind an existing security group when creating an ENI.
* You can bind a tag when creating an ENI. The tag list in the response indicates the tags that have been successfully added.
>?This API is async. You can call the [`DescribeVpcTaskResult`](https://intl.cloud.tencent.com/document/api/215/59037?from_cn_redirect=1) API to query the task result. When the task is completed, you can continue other tasks.
>
     * @param {CreateAndAttachNetworkInterfaceRequest} req
     * @param {function(string, CreateAndAttachNetworkInterfaceResponse):void} cb
     * @public
     */
    CreateAndAttachNetworkInterface(req, cb) {
        let resp = new CreateAndAttachNetworkInterfaceResponse();
        this.request("CreateAndAttachNetworkInterface", req, resp, cb);
    }

    /**
     * This API is used to modify specified snapshot policies.
     * @param {ModifySnapshotPoliciesRequest} req
     * @param {function(string, ModifySnapshotPoliciesResponse):void} cb
     * @public
     */
    ModifySnapshotPolicies(req, cb) {
        let resp = new ModifySnapshotPoliciesResponse();
        this.request("ModifySnapshotPolicies", req, resp, cb);
    }

    /**
     * This API is used to query NAT gateways.
     * @param {DescribeNatGatewaysRequest} req
     * @param {function(string, DescribeNatGatewaysResponse):void} cb
     * @public
     */
    DescribeNatGateways(req, cb) {
        let resp = new DescribeNatGatewaysResponse();
        this.request("DescribeNatGateways", req, resp, cb);
    }

    /**
     * This API is used to create subnets in batches.
* You must create a VPC instance before creating a subnet.
* After the subnet is successfully created, its IP address range cannot be modified. The subnet IP address range must fall within the VPC IP address range. They can be the same if the VPC has only one subnet. We recommend that you keep the subnet IP address range within the VPC IP address range to reserve IP address ranges for other subnets.
* The subnet mask of the smallest IP address range that can be created is 28 (16 IP addresses), and that of the largest IP address range is 16 (65,536 IP addresses).
* IP address ranges of different subnets cannot overlap with each other within the same VPC instance.
* A subnet is automatically associated with the default route table once created.
* You can bind a tag when creating a subnet. The tag list in the response indicates the tags that have been successfully added.
     * @param {CreateSubnetsRequest} req
     * @param {function(string, CreateSubnetsResponse):void} cb
     * @public
     */
    CreateSubnets(req, cb) {
        let resp = new CreateSubnetsResponse();
        this.request("CreateSubnets", req, resp, cb);
    }

    /**
     * This API is used to modify the bandwidth limit policy of a postpaid CCN instance.
     * @param {ModifyCcnRegionBandwidthLimitsTypeRequest} req
     * @param {function(string, ModifyCcnRegionBandwidthLimitsTypeResponse):void} cb
     * @public
     */
    ModifyCcnRegionBandwidthLimitsType(req, cb) {
        let resp = new ModifyCcnRegionBandwidthLimitsTypeResponse();
        this.request("ModifyCcnRegionBandwidthLimitsType", req, resp, cb);
    }

    /**
     * This API is used to check whether Cloud Virtual Machines support jumbo frames.
Usage limits.
This API is used to perform operations that require CAM policy authorization and read access to the corresponding instance. The API accesses CVM instances, so it verifies whether there are CAM permissions for the instance. For example: CAM action allows vpc:DescribeInstanceJumbo; resource allows qcs::cvm:ap-guangzhou:uin/2126195383:instance/*.
This API is used to check the jumbo frame status before and after instance migration. The status returned by this API may be inconsistent before and after migration. You need to check whether the host machines of the instance before and after migration both support jumbo frames. One possible reason is that the instance has been migrated to a host machine that does not support jumbo frames.
     * @param {DescribeInstanceJumboRequest} req
     * @param {function(string, DescribeInstanceJumboResponse):void} cb
     * @public
     */
    DescribeInstanceJumbo(req, cb) {
        let resp = new DescribeInstanceJumboResponse();
        this.request("DescribeInstanceJumbo", req, resp, cb);
    }

    /**
     * This API is used to delete traffic packages. Note that only non-valid traffic packages can be deleted. 
     * @param {DeleteTrafficPackagesRequest} req
     * @param {function(string, DeleteTrafficPackagesResponse):void} cb
     * @public
     */
    DeleteTrafficPackages(req, cb) {
        let resp = new DeleteTrafficPackagesResponse();
        this.request("DeleteTrafficPackages", req, resp, cb);
    }

    /**
     * This API is used to verify the network detection status.
     * @param {CheckNetDetectStateRequest} req
     * @param {function(string, CheckNetDetectStateResponse):void} cb
     * @public
     */
    CheckNetDetectState(req, cb) {
        let resp = new CheckNetDetectStateResponse();
        this.request("CheckNetDetectState", req, resp, cb);
    }

    /**
     * This API (DescribeVpcs) is used to query the VPC list.
     * @param {DescribeVpcsRequest} req
     * @param {function(string, DescribeVpcsResponse):void} cb
     * @public
     */
    DescribeVpcs(req, cb) {
        let resp = new DescribeVpcsResponse();
        this.request("DescribeVpcs", req, resp, cb);
    }

    /**
     * This API (InquiryPriceResetVpnGatewayInternetMaxBandwidth) is used to query the price for adjusting the bandwidth cap of a VPN gateway.
     * @param {InquiryPriceResetVpnGatewayInternetMaxBandwidthRequest} req
     * @param {function(string, InquiryPriceResetVpnGatewayInternetMaxBandwidthResponse):void} cb
     * @public
     */
    InquiryPriceResetVpnGatewayInternetMaxBandwidth(req, cb) {
        let resp = new InquiryPriceResetVpnGatewayInternetMaxBandwidthResponse();
        this.request("InquiryPriceResetVpnGatewayInternetMaxBandwidth", req, resp, cb);
    }

    /**
     * This API (DeleteDirectConnectGatewayCcnRoutes) is used to delete the CCN routes (IDC IP range) of a Direct Connect gateway.
     * @param {DeleteDirectConnectGatewayCcnRoutesRequest} req
     * @param {function(string, DeleteDirectConnectGatewayCcnRoutesResponse):void} cb
     * @public
     */
    DeleteDirectConnectGatewayCcnRoutes(req, cb) {
        let resp = new DeleteDirectConnectGatewayCcnRoutesResponse();
        this.request("DeleteDirectConnectGatewayCcnRoutes", req, resp, cb);
    }

    /**
     * This API (RejectAttachCcnInstances) is used to reject association operations when instances are associated across accounts for the CCN owner.

     * @param {RejectAttachCcnInstancesRequest} req
     * @param {function(string, RejectAttachCcnInstancesResponse):void} cb
     * @public
     */
    RejectAttachCcnInstances(req, cb) {
        let resp = new RejectAttachCcnInstancesResponse();
        this.request("RejectAttachCcnInstances", req, resp, cb);
    }

    /**
     * This API is used to query the price of modifying EIP bandwidth.
     * @param {InquiryPriceModifyAddressesBandwidthRequest} req
     * @param {function(string, InquiryPriceModifyAddressesBandwidthResponse):void} cb
     * @public
     */
    InquiryPriceModifyAddressesBandwidth(req, cb) {
        let resp = new InquiryPriceModifyAddressesBandwidthResponse();
        this.request("InquiryPriceModifyAddressesBandwidth", req, resp, cb);
    }

    /**
     * This API is used to adjust the bandwidth of [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1), including EIP billed on a pay-as-you-go, monthly subscription, and bandwidth package basis.
     * @param {ModifyAddressesBandwidthRequest} req
     * @param {function(string, ModifyAddressesBandwidthResponse):void} cb
     * @public
     */
    ModifyAddressesBandwidth(req, cb) {
        let resp = new ModifyAddressesBandwidthResponse();
        this.request("ModifyAddressesBandwidth", req, resp, cb);
    }

    /**
     * This API is used to create the port forwarding rules of a NAT gateway.
     * @param {CreateNatGatewayDestinationIpPortTranslationNatRuleRequest} req
     * @param {function(string, CreateNatGatewayDestinationIpPortTranslationNatRuleResponse):void} cb
     * @public
     */
    CreateNatGatewayDestinationIpPortTranslationNatRule(req, cb) {
        let resp = new CreateNatGatewayDestinationIpPortTranslationNatRuleResponse();
        this.request("CreateNatGatewayDestinationIpPortTranslationNatRule", req, resp, cb);
    }

    /**
     * This API is used to create a subnet.
* You must create a VPC instance before creating a subnet.
* After the subnet is successfully created, its IP address range cannot be modified. The subnet IP address range must fall within the VPC IP address range. They can be the same if the VPC instance has only one subnet. We recommend that you keep the subnet IP address range within the VPC IP address range to reserve IP address ranges for other subnets.
* The subnet mask of the smallest IP address range that can be created is 28 (16 IP addresses), and that of the largest IP address range is 16 (65,536 IP addresses).
* IP address ranges of different subnets cannot overlap with each other within the same VPC instance.
* A subnet is automatically associated with the default route table once created.
* You can bind a tag when creating a subnet. The tag list in the response indicates the tags that have been successfully added.
     * @param {CreateSubnetRequest} req
     * @param {function(string, CreateSubnetResponse):void} cb
     * @public
     */
    CreateSubnet(req, cb) {
        let resp = new CreateSubnetResponse();
        this.request("CreateSubnet", req, resp, cb);
    }

    /**
     * This API is used to allocate IPv6 public network bandwidth for classic elastic public IPv6 addresses.

- Classic elastic public IPv6 addresses only have the private network communication capability by default. They can have the IPv6 public network communication capability and be displayed in the list of Classic Elastic Public IPv6 only after IPv6 public network bandwidth is allocated in the console or by calling this API. 
- You can allocate public network bandwidth for one or multiple Classic elastic public IPv6 addresses each time.
     * @param {AllocateIp6AddressesBandwidthRequest} req
     * @param {function(string, AllocateIp6AddressesBandwidthResponse):void} cb
     * @public
     */
    AllocateIp6AddressesBandwidth(req, cb) {
        let resp = new AllocateIp6AddressesBandwidthResponse();
        this.request("AllocateIp6AddressesBandwidth", req, resp, cb);
    }

    /**
     * This API is used to modify the attributes of a flow log.
     * @param {ModifyFlowLogAttributeRequest} req
     * @param {function(string, ModifyFlowLogAttributeResponse):void} cb
     * @public
     */
    ModifyFlowLogAttribute(req, cb) {
        let resp = new ModifyFlowLogAttributeResponse();
        this.request("ModifyFlowLogAttribute", req, resp, cb);
    }

    /**
     * This API (ModifyAddressTemplateAttribute) is used to modify an IP address template.
     * @param {ModifyAddressTemplateAttributeRequest} req
     * @param {function(string, ModifyAddressTemplateAttributeResponse):void} cb
     * @public
     */
    ModifyAddressTemplateAttribute(req, cb) {
        let resp = new ModifyAddressTemplateAttributeResponse();
        this.request("ModifyAddressTemplateAttribute", req, resp, cb);
    }

    /**
     * This API (AcceptAttachCcnInstances) is used to associate instances across accounts. Cloud Connect Network (CCN) owners accept and agree to the operations.
     * @param {AcceptAttachCcnInstancesRequest} req
     * @param {function(string, AcceptAttachCcnInstancesResponse):void} cb
     * @public
     */
    AcceptAttachCcnInstances(req, cb) {
        let resp = new AcceptAttachCcnInstancesResponse();
        this.request("AcceptAttachCcnInstances", req, resp, cb);
    }

    /**
     * This API is used to delete a parameter template of the IP address, protocol port, IP address group, or protocol port group type.
     * @param {DeleteTemplateMemberRequest} req
     * @param {function(string, DeleteTemplateMemberResponse):void} cb
     * @public
     */
    DeleteTemplateMember(req, cb) {
        let resp = new DeleteTemplateMemberResponse();
        this.request("DeleteTemplateMember", req, resp, cb);
    }

    /**
     * This API (DeleteServiceTemplateGroup) is used to delete a protocol port template group.
     * @param {DeleteServiceTemplateGroupRequest} req
     * @param {function(string, DeleteServiceTemplateGroupResponse):void} cb
     * @public
     */
    DeleteServiceTemplateGroup(req, cb) {
        let resp = new DeleteServiceTemplateGroupResponse();
        this.request("DeleteServiceTemplateGroup", req, resp, cb);
    }

    /**
     * This API is used to query the inbound IP bandwidth limit of a gateway.
     * @param {DescribeGatewayFlowQosRequest} req
     * @param {function(string, DescribeGatewayFlowQosResponse):void} cb
     * @public
     */
    DescribeGatewayFlowQos(req, cb) {
        let resp = new DescribeGatewayFlowQosResponse();
        this.request("DescribeGatewayFlowQos", req, resp, cb);
    }

    /**
     * This API is used to modify a parameter template of the IP address, protocol port, IP address group, or protocol port group type.
     * @param {ModifyTemplateMemberRequest} req
     * @param {function(string, ModifyTemplateMemberResponse):void} cb
     * @public
     */
    ModifyTemplateMember(req, cb) {
        let resp = new ModifyTemplateMemberResponse();
        this.request("ModifyTemplateMember", req, resp, cb);
    }

    /**
     * This API is used to unbind a direct connect gateway from a NAT Gateway. After unbinding, the direct connect gateway cannot access internet through the NAT Gateway.
     * @param {DisassociateDirectConnectGatewayNatGatewayRequest} req
     * @param {function(string, DisassociateDirectConnectGatewayNatGatewayResponse):void} cb
     * @public
     */
    DisassociateDirectConnectGatewayNatGateway(req, cb) {
        let resp = new DisassociateDirectConnectGatewayNatGatewayResponse();
        this.request("DisassociateDirectConnectGatewayNatGateway", req, resp, cb);
    }

    /**
     * This API is used to unbind an [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1) (EIP for short).
* This API supports unbinding an EIP from CVM instances and ENIs.
* This API does not support unbinding an EIP from a NAT Gateway. To unbind an EIP from a NAT Gateway, use the [`DisassociateNatGatewayAddress`](https://intl.cloud.tencent.com/document/api/215/36716?from_cn_redirect=1) API.
* Only EIPs in BIND or BIND_ENI status can be unbound.
* Blocked EIPs cannot be unbound.
     * @param {DisassociateAddressRequest} req
     * @param {function(string, DisassociateAddressResponse):void} cb
     * @public
     */
    DisassociateAddress(req, cb) {
        let resp = new DisassociateAddressResponse();
        this.request("DisassociateAddress", req, resp, cb);
    }

    /**
     * This API (ResetAttachCcnInstances) is used to re-apply for the association operation when the application for cross-account instance association expires.
     * @param {ResetAttachCcnInstancesRequest} req
     * @param {function(string, ResetAttachCcnInstancesResponse):void} cb
     * @public
     */
    ResetAttachCcnInstances(req, cb) {
        let resp = new ResetAttachCcnInstancesResponse();
        this.request("ResetAttachCcnInstances", req, resp, cb);
    }

    /**
     * This API (InquiryPriceRenewAddresses) is used to query the price of renewing prepaid EIPs.
     * @param {InquiryPriceRenewAddressesRequest} req
     * @param {function(string, InquiryPriceRenewAddressesResponse):void} cb
     * @public
     */
    InquiryPriceRenewAddresses(req, cb) {
        let resp = new InquiryPriceRenewAddressesResponse();
        this.request("InquiryPriceRenewAddresses", req, resp, cb);
    }

    /**
     * This API (ModifyHaVipAttribute) is used to modify HAVIP attributes.
     * @param {ModifyHaVipAttributeRequest} req
     * @param {function(string, ModifyHaVipAttributeResponse):void} cb
     * @public
     */
    ModifyHaVipAttribute(req, cb) {
        let resp = new ModifyHaVipAttributeResponse();
        this.request("ModifyHaVipAttribute", req, resp, cb);
    }

    /**
     * This API (DeleteSecurityGroupPolicies) is used to delete security group policies (SecurityGroupPolicy).
* SecurityGroupPolicySet.Version is used to specify the version of the security group you are operating. If the specified Version number differs from the latest version of the current security group, a failure will be returned. If Version is not specified, the policy of the specified PolicyIndex will be deleted directly.
     * @param {DeleteSecurityGroupPoliciesRequest} req
     * @param {function(string, DeleteSecurityGroupPoliciesResponse):void} cb
     * @public
     */
    DeleteSecurityGroupPolicies(req, cb) {
        let resp = new DeleteSecurityGroupPoliciesResponse();
        this.request("DeleteSecurityGroupPolicies", req, resp, cb);
    }

    /**
     * This API is used to create a VPC instance.
* The subnet mask of the smallest IP address range that can be created is 28 (16 IP addresses), that of the largest IP address ranges 10.0.0.0/12 and 172.16.0.0/12 is 12 (1,048,576 IP addresses), and that of the largest IP address range 192.168.0.0/16 is 16 (65,536 IP addresses). For more information on how to plan VPC IP ranges, see [Network Planning](https://intl.cloud.tencent.com/document/product/215/30313?from_cn_redirect=1).
* The number of VPC instances that can be created in a region is limited. For more information, see <a href="https://intl.cloud.tencent.com/doc/product/215/537?from_cn_redirect=1" title="VPC Use Limits">VPC Use Limits</a>. To request more resources, [submit a ticket](https://console.cloud.tencent.com/workorder/category).
* You can bind tags when creating a VPC instance. The tag list in the response indicates the tags that have been successfully added.
     * @param {CreateVpcRequest} req
     * @param {function(string, CreateVpcResponse):void} cb
     * @public
     */
    CreateVpc(req, cb) {
        let resp = new CreateVpcResponse();
        this.request("CreateVpc", req, resp, cb);
    }

    /**
     * This API is used to add resources to a bandwidth package, including [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1), [Cloud Load Balancer](https://intl.cloud.tencent.com/document/product/214/517?from_cn_redirect=1), and so on.
     * @param {AddBandwidthPackageResourcesRequest} req
     * @param {function(string, AddBandwidthPackageResourcesResponse):void} cb
     * @public
     */
    AddBandwidthPackageResources(req, cb) {
        let resp = new AddBandwidthPackageResourcesResponse();
        this.request("AddBandwidthPackageResources", req, resp, cb);
    }

    /**
     * This API (AssignIpv6SubnetCidrBlock) is used to assign IPv6 subnet IP ranges.
* To assign an `IPv6` IP range to a subnet, the `VPC` that the subnet belongs to should have obtained the `IPv6` IP range. If this has not been assigned, use the `AssignIpv6CidrBlock` API to assign an `IPv6` IP range to the `VPC` to which the subnet belongs. Otherwise, the `IPv6` subnet IP range cannot be assigned.
* Each subnet can only be assigned one IPv6 IP range.
     * @param {AssignIpv6SubnetCidrBlockRequest} req
     * @param {function(string, AssignIpv6SubnetCidrBlockResponse):void} cb
     * @public
     */
    AssignIpv6SubnetCidrBlock(req, cb) {
        let resp = new AssignIpv6SubnetCidrBlockResponse();
        this.request("AssignIpv6SubnetCidrBlock", req, resp, cb);
    }

    /**
     * This API is used to query VPN gateway-based CCN routes.
     * @param {DescribeVpnGatewayCcnRoutesRequest} req
     * @param {function(string, DescribeVpnGatewayCcnRoutesResponse):void} cb
     * @public
     */
    DescribeVpnGatewayCcnRoutes(req, cb) {
        let resp = new DescribeVpnGatewayCcnRoutesResponse();
        this.request("DescribeVpnGatewayCcnRoutes", req, resp, cb);
    }

    /**
     * This API is used to apply for one or more [Elastic IP Addresses](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1) (EIPs for short).
* An EIP is a static IP address that is dedicated for dynamic cloud computing. You can quickly re-map an EIP to another instance under your account to protect against instance failures.
* Your EIP is associated with your Tencent Cloud account rather than an instance. It remains associated with your Tencent Cloud account until you choose to explicitly release it or your account is in arrears for more than 24 hours.
* The maximum number of EIPs that can be applied for a Tencent Cloud account in each region is restricted. For more information, see [EIP Product Introduction](https://intl.cloud.tencent.com/document/product/213/5733?from_cn_redirect=1). You can get the quota information through the DescribeAddressQuota API.
     * @param {AllocateAddressesRequest} req
     * @param {function(string, AllocateAddressesResponse):void} cb
     * @public
     */
    AllocateAddresses(req, cb) {
        let resp = new AllocateAddressesResponse();
        this.request("AllocateAddresses", req, resp, cb);
    }

    /**
     * This API is used to check whether the secondary CIDR block conflicts with existing routes, peering connections (peer VPC CIDR blocks), and other resources. 
* Check whether the secondary CIDR block overlaps with the primary/secondary CIDR block of the current VPC.
* Check whether the secondary CIDR block overlaps with the routing destination of the current VPC.
* If the current VPC is used in a peering connection, check whether the secondary CIDR block overlaps with the primary/secondary CIDR block of the peer VPC.
     * @param {CheckAssistantCidrRequest} req
     * @param {function(string, CheckAssistantCidrResponse):void} cb
     * @public
     */
    CheckAssistantCidr(req, cb) {
        let resp = new CheckAssistantCidrResponse();
        this.request("CheckAssistantCidr", req, resp, cb);
    }

    /**
     * This API is used to query all the flow logs of the current account.
     * @param {DescribeFlowLogsRequest} req
     * @param {function(string, DescribeFlowLogsResponse):void} cb
     * @public
     */
    DescribeFlowLogs(req, cb) {
        let resp = new DescribeFlowLogsResponse();
        this.request("DescribeFlowLogs", req, resp, cb);
    }

    /**
     * This API is used to delete a route reception policy and entries.
     * @param {DeleteRoutePolicyRequest} req
     * @param {function(string, DeleteRoutePolicyResponse):void} cb
     * @public
     */
    DeleteRoutePolicy(req, cb) {
        let resp = new DeleteRoutePolicyResponse();
        this.request("DeleteRoutePolicy", req, resp, cb);
    }

    /**
     * This API (DescribeVpcIpv6Addresses) is used to query `VPC` `IPv6` information.
This API is used to query only the information of `IPv6` addresses that are already in use. When querying IPs that have not yet been used, this API will not report an error, but the IPs will not appear in the returned results.
     * @param {DescribeVpcIpv6AddressesRequest} req
     * @param {function(string, DescribeVpcIpv6AddressesResponse):void} cb
     * @public
     */
    DescribeVpcIpv6Addresses(req, cb) {
        let resp = new DescribeVpcIpv6AddressesResponse();
        this.request("DescribeVpcIpv6Addresses", req, resp, cb);
    }

    /**
     * This API is used to query the detailed information on one or multiple classic elastic public IPv6 instances.
     * @param {DescribeIp6AddressesRequest} req
     * @param {function(string, DescribeIp6AddressesResponse):void} cb
     * @public
     */
    DescribeIp6Addresses(req, cb) {
        let resp = new DescribeIp6AddressesResponse();
        this.request("DescribeIp6Addresses", req, resp, cb);
    }

    /**
     * This API (RenewVpnGateway) is used to renew prepaid (monthly subscription) VPN gateways. Currently, only IPSEC gateways are supported.
     * @param {RenewVpnGatewayRequest} req
     * @param {function(string, RenewVpnGatewayResponse):void} cb
     * @public
     */
    RenewVpnGateway(req, cb) {
        let resp = new RenewVpnGatewayResponse();
        this.request("RenewVpnGateway", req, resp, cb);
    }

    /**
     * This API is used set the auto-renewal configuration of a VPN gateway.
     * @param {SetVpnGatewaysRenewFlagRequest} req
     * @param {function(string, SetVpnGatewaysRenewFlagResponse):void} cb
     * @public
     */
    SetVpnGatewaysRenewFlag(req, cb) {
        let resp = new SetVpnGatewaysRenewFlagResponse();
        this.request("SetVpnGatewaysRenewFlag", req, resp, cb);
    }

    /**
     * This API is used to modify a reserved private IP address.
     * @param {ModifyReserveIpAddressRequest} req
     * @param {function(string, ModifyReserveIpAddressResponse):void} cb
     * @public
     */
    ModifyReserveIpAddress(req, cb) {
        let resp = new ModifyReserveIpAddressResponse();
        this.request("ModifyReserveIpAddress", req, resp, cb);
    }

    /**
     * This API is used to disable specified snapshot policies.
     * @param {DisableSnapshotPoliciesRequest} req
     * @param {function(string, DisableSnapshotPoliciesResponse):void} cb
     * @public
     */
    DisableSnapshotPolicies(req, cb) {
        let resp = new DisableSnapshotPoliciesResponse();
        this.request("DisableSnapshotPolicies", req, resp, cb);
    }

    /**
     * This API is used to add a network instance to a CCN instance. Network instances include VPCs and Direct Connect gateways. <br />
The number of network instances that each CCN can be associated with is limited. For more information, see the product documentation. If you need to associate more instances, please submit a ticket.
     * @param {AttachCcnInstancesRequest} req
     * @param {function(string, AttachCcnInstancesResponse):void} cb
     * @public
     */
    AttachCcnInstances(req, cb) {
        let resp = new AttachCcnInstancesResponse();
        this.request("AttachCcnInstances", req, resp, cb);
    }

    /**
     * This API is used to bind an [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1) (EIP for short) to the specified private IP of an instance or ENI.
* Binding an EIP to a CVM instance is actually binding the EIP to the primary private IP of the primary ENI on the CVM instance.
* When an EIP is bound, the public IP previously bound to the CVM instance will be unbound and released automatically.
* To bind another EIP to the private IP of the specified ENI, you must first unbind the EIP.
* To bind an EIP to a NAT Gateway, use the API [AssociateNatGatewayAddress](https://intl.cloud.tencent.com/document/product/215/36722?from_cn_redirect=1).
* An EIP cannot be bound if it’s overdue or blocked
* Only EIP in the `UNBIND` status can be bound.
     * @param {AssociateAddressRequest} req
     * @param {function(string, AssociateAddressResponse):void} cb
     * @public
     */
    AssociateAddress(req, cb) {
        let resp = new AssociateAddressResponse();
        this.request("AssociateAddress", req, resp, cb);
    }

    /**
     * This API (DeleteCustomerGateway) is used to delete customer gateways.
     * @param {DeleteCustomerGatewayRequest} req
     * @param {function(string, DeleteCustomerGatewayResponse):void} cb
     * @public
     */
    DeleteCustomerGateway(req, cb) {
        let resp = new DeleteCustomerGatewayResponse();
        this.request("DeleteCustomerGateway", req, resp, cb);
    }

    /**
     * This API is used to delete a subnet.
* Remove all resources in the subnet before deleting it
     * @param {DeleteSubnetRequest} req
     * @param {function(string, DeleteSubnetResponse):void} cb
     * @public
     */
    DeleteSubnet(req, cb) {
        let resp = new DeleteSubnetResponse();
        this.request("DeleteSubnet", req, resp, cb);
    }

    /**
     * This API is used to migrate the private IPs between ENIs. 
* Note that primary IPs cannot be migrated. 
* The source and destination ENI must be within the same subnet.  

This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {MigratePrivateIpAddressRequest} req
     * @param {function(string, MigratePrivateIpAddressResponse):void} cb
     * @public
     */
    MigratePrivateIpAddress(req, cb) {
        let resp = new MigratePrivateIpAddressResponse();
        this.request("MigratePrivateIpAddress", req, resp, cb);
    }

    /**
     * This API is used to create a Classiclink between a VPC instance and a classic network device.
* The VPC instance and the classic network device must be in the same region.
* For differences between VPC and the classic network, see <a href="https://intl.cloud.tencent.com/document/product/215/30720?from_cn_redirect=1">VPC and Classic Network</a>.
>?This API is async. You can call the [`DescribeVpcTaskResult`](https://intl.cloud.tencent.com/document/api/215/59037?from_cn_redirect=1) API to query the task result. When the task is completed, you can continue other tasks.
>
     * @param {AttachClassicLinkVpcRequest} req
     * @param {function(string, AttachClassicLinkVpcResponse):void} cb
     * @public
     */
    AttachClassicLinkVpc(req, cb) {
        let resp = new AttachClassicLinkVpcResponse();
        this.request("AttachClassicLinkVpc", req, resp, cb);
    }

    /**
     * This API is used to unbind an EIP from a NAT gateway.
     * @param {DisassociateNatGatewayAddressRequest} req
     * @param {function(string, DisassociateNatGatewayAddressResponse):void} cb
     * @public
     */
    DisassociateNatGatewayAddress(req, cb) {
        let resp = new DisassociateNatGatewayAddressResponse();
        this.request("DisassociateNatGatewayAddress", req, resp, cb);
    }

    /**
     * This API is used to query local gateways of a CDC instance.
     * @param {DescribeLocalGatewayRequest} req
     * @param {function(string, DescribeLocalGatewayResponse):void} cb
     * @public
     */
    DescribeLocalGateway(req, cb) {
        let resp = new DescribeLocalGatewayResponse();
        this.request("DescribeLocalGateway", req, resp, cb);
    }

    /**
     * This API is used to query the bandwidth limits of a CCN instance. Monthly-subscribed CCNs only support Inter-region Bandwidth Limits, while the pay-as-you-go CCNs support both the Inter-region Bandwidth Limits and Region Outbound Bandwidth Limits. 
     * @param {GetCcnRegionBandwidthLimitsRequest} req
     * @param {function(string, GetCcnRegionBandwidthLimitsResponse):void} cb
     * @public
     */
    GetCcnRegionBandwidthLimits(req, cb) {
        let resp = new GetCcnRegionBandwidthLimitsResponse();
        this.request("GetCcnRegionBandwidthLimits", req, resp, cb);
    }

    /**
     * This API is used to enable flow log.
     * @param {EnableFlowLogsRequest} req
     * @param {function(string, EnableFlowLogsResponse):void} cb
     * @public
     */
    EnableFlowLogs(req, cb) {
        let resp = new EnableFlowLogsResponse();
        this.request("EnableFlowLogs", req, resp, cb);
    }

    /**
     * This API is used to delete specified in/outbound rules of the network ACL quintuple. In the `NetworkAclQuintupleEntrySet` parameters, `NetworkAclQuintupleEntryId` is required for `NetworkAclQuintupleEntry`.
     * @param {DeleteNetworkAclQuintupleEntriesRequest} req
     * @param {function(string, DeleteNetworkAclQuintupleEntriesResponse):void} cb
     * @public
     */
    DeleteNetworkAclQuintupleEntries(req, cb) {
        let resp = new DeleteNetworkAclQuintupleEntriesResponse();
        this.request("DeleteNetworkAclQuintupleEntries", req, resp, cb);
    }

    /**
     * This API is used to delete a direct connect gateway.
<li>For a NAT gateway, NAT and ACL rules will be cleared upon the deletion of a direct connect gateway.
<li>After the deletion of a direct connect gateway, the routing policy associated with the gateway in the route table will also be deleted.
This API is completed asynchronously. If you need to query the async job execution results, please use the `RequestId` returned by this API to poll the `QueryTask` API.
     * @param {DeleteDirectConnectGatewayRequest} req
     * @param {function(string, DeleteDirectConnectGatewayResponse):void} cb
     * @public
     */
    DeleteDirectConnectGateway(req, cb) {
        let resp = new DeleteDirectConnectGatewayResponse();
        this.request("DeleteDirectConnectGateway", req, resp, cb);
    }

    /**
     * This API is used to query instances associated with a snapshot policy.
     * @param {DescribeSnapshotAttachedInstancesRequest} req
     * @param {function(string, DescribeSnapshotAttachedInstancesResponse):void} cb
     * @public
     */
    DescribeSnapshotAttachedInstances(req, cb) {
        let resp = new DescribeSnapshotAttachedInstancesResponse();
        this.request("DescribeSnapshotAttachedInstances", req, resp, cb);
    }

    /**
     * This API (DescribeDirectConnectGatewayCcnRoutes) is used to query the CCN routes (IDC IP range) of the Direct Connect gateway.
     * @param {DescribeDirectConnectGatewayCcnRoutesRequest} req
     * @param {function(string, DescribeDirectConnectGatewayCcnRoutesResponse):void} cb
     * @public
     */
    DescribeDirectConnectGatewayCcnRoutes(req, cb) {
        let resp = new DescribeDirectConnectGatewayCcnRoutesResponse();
        this.request("DescribeDirectConnectGatewayCcnRoutes", req, resp, cb);
    }

    /**
     * This API is used to create an ENI.
* You can specify private IP addresses and a primary IP when creating an ENI. The specified private IP must be in the same subnet as the ENI and is not occupied.
* When creating an ENI, you can specify the number of private IP addresses that you want to apply for. The system will randomly generate private IP addresses.
* An ENI can only be bound with a limited number of IP addresses. For more information about resource limits, see <a href="/document/product/576/18527">ENI Use Limits</a>.
* You can bind an existing security group when creating an ENI.
* You can bind a tag when creating an ENI. The tag list in the response indicates the tags that have been successfully added.
>?This API is async. You can call the [`DescribeVpcTaskResult`](https://intl.cloud.tencent.com/document/api/215/59037?from_cn_redirect=1) API to query the task result. When the task is completed, you can continue other tasks.
>
     * @param {CreateNetworkInterfaceRequest} req
     * @param {function(string, CreateNetworkInterfaceResponse):void} cb
     * @public
     */
    CreateNetworkInterface(req, cb) {
        let resp = new CreateNetworkInterfaceResponse();
        this.request("CreateNetworkInterface", req, resp, cb);
    }

    /**
     * This API is used to delete bandwidth packages, including [device bandwidth packages](https://intl.cloud.tencent.com/document/product/684/15246?from_cn_redirect=1#.E8.AE.BE.E5.A4.87.E5.B8.A6.E5.AE.BD.E5.8C.85) and [IP bandwidth packages](https://intl.cloud.tencent.com/document/product/684/15246?from_cn_redirect=1#ip-.E5.B8.A6.E5.AE.BD.E5.8C.85).
     * @param {DeleteBandwidthPackageRequest} req
     * @param {function(string, DeleteBandwidthPackageResponse):void} cb
     * @public
     */
    DeleteBandwidthPackage(req, cb) {
        let resp = new DeleteBandwidthPackageResponse();
        this.request("DeleteBandwidthPackage", req, resp, cb);
    }

    /**
     * This API is used to reset the `Egress` and `Ingress` rules (SecurityGroupPolicy) of a security group.

<ul>
<li>This API does not support custom indexes <code>PolicyIndex</code>. </li>
<li>For <code>SecurityGroupPolicySet</code> parameter,<ul> <ul>
	<li>If <code>SecurityGroupPolicySet.Version</code> is set to `0`, all policies will be cleared, and <code>Egress</code> and <code>Ingress</code> will be ignored. </li>
	<li>If <code>SecurityGroupPolicySet.Version</code> is not set to `0`, add <code>Egress</code> and <code>Ingress</code> policies: <ul>
		<li><code>Protocol</code>: <code>TCP</code>, <code>UDP</code>, <code>ICMP</code>, <code>ICMPV6</code>, <code>GRE</code>, or <code>ALL</code>. </li>
		<li><code>CidrBlock</code>: a CIDR block in the correct format. In the classic network, even if the CIDR block specified in <code>CidrBlock</code> contains the Tencent Cloud private IPs that are not using for CVMs under your Tencent Cloud account, it does not mean this policy allows you to access those resources. The network isolation policies between tenants take priority over the private network policies in security groups. </li>
		<li><code>Ipv6CidrBlock</code>: an IPv6 CIDR block in the correct format. In the classic network, even if the CIDR block specified in <code>Ipv6CidrBlock</code> contains the Tencent Cloud private IPv6 addresses that are not using for CVMs under your Tencent Cloud account, it does not mean this policy allows you to access those resources. The network isolation policies between tenants take priority over the private network policies in security groups. </li>
		<li><code>SecurityGroupId</code>: ID of the security group. It can be the ID of a security group to be modified, or the ID of another security group in the same project. All private IPs of all CVMs under the security group will be covered. If this field is used, the policy will automatically change according to the CVM associated with the group ID while being used to match network messages. You don't need to change it manually. </li>
		<li><code>Port</code>: a single port number such as 80, or a port range in the format of '8000-8010'.  You may use this field only if the <code>Protocol</code> field takes the value <code>TCP</code> or <code>UDP</code>. </li>
		<li><code>Action</code>: only allows <code>ACCEPT</code> or <code>DROP</code>. </li>
		<li><code>CidrBlock</code>, <code>Ipv6CidrBlock</code>, <code>SecurityGroupId</code>, and <code>AddressTemplate</code> are mutually exclusive. <code>Protocol</code> + <code>Port</code> and <code>ServiceTemplate</code> are mutually exclusive.</li> </li>
</ul></li></ul></li>
</ul>
     * @param {ModifySecurityGroupPoliciesRequest} req
     * @param {function(string, ModifySecurityGroupPoliciesResponse):void} cb
     * @public
     */
    ModifySecurityGroupPolicies(req, cb) {
        let resp = new ModifySecurityGroupPoliciesResponse();
        this.request("ModifySecurityGroupPolicies", req, resp, cb);
    }

    /**
     * This API (DescribeNetDetectStates) is used to query the list of network detection verification results.
     * @param {DescribeNetDetectStatesRequest} req
     * @param {function(string, DescribeNetDetectStatesResponse):void} cb
     * @public
     */
    DescribeNetDetectStates(req, cb) {
        let resp = new DescribeNetDetectStatesResponse();
        this.request("DescribeNetDetectStates", req, resp, cb);
    }

    /**
     * This API is used to create route reception policy entries.
     * @param {CreateRoutePolicyEntriesRequest} req
     * @param {function(string, CreateRoutePolicyEntriesResponse):void} cb
     * @public
     */
    CreateRoutePolicyEntries(req, cb) {
        let resp = new CreateRoutePolicyEntriesResponse();
        this.request("CreateRoutePolicyEntries", req, resp, cb);
    }

    /**
     * This API (DescribeCcns) is used to query the CCN list.
     * @param {DescribeCcnsRequest} req
     * @param {function(string, DescribeCcnsResponse):void} cb
     * @public
     */
    DescribeCcns(req, cb) {
        let resp = new DescribeCcnsResponse();
        this.request("DescribeCcns", req, resp, cb);
    }

    /**
     * This API is used to modify specified routing policy entries based on route reception policy rule ID and supports batch modification.
     * @param {ReplaceRoutePolicyEntriesRequest} req
     * @param {function(string, ReplaceRoutePolicyEntriesResponse):void} cb
     * @public
     */
    ReplaceRoutePolicyEntries(req, cb) {
        let resp = new ReplaceRoutePolicyEntriesResponse();
        this.request("ReplaceRoutePolicyEntries", req, resp, cb);
    }

    /**
     * This API (DeleteCcn) is used to delete CCNs.
* After deletion, the routes between all instances associated with the CCN will be deleted, and the network will be interrupted. Please confirm this operation in advance.
* CCN deletion is an irreversible operation. Please proceed with caution.

     * @param {DeleteCcnRequest} req
     * @param {function(string, DeleteCcnResponse):void} cb
     * @public
     */
    DeleteCcn(req, cb) {
        let resp = new DeleteCcnResponse();
        this.request("DeleteCcn", req, resp, cb);
    }

    /**
     * This API is used to create an endpoint service.
     * @param {CreateVpcEndPointServiceRequest} req
     * @param {function(string, CreateVpcEndPointServiceResponse):void} cb
     * @public
     */
    CreateVpcEndPointService(req, cb) {
        let resp = new CreateVpcEndPointServiceResponse();
        this.request("CreateVpcEndPointService", req, resp, cb);
    }

    /**
     * This API is used to unbind an EIP from an HAVIP. <br />
This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {HaVipDisassociateAddressIpRequest} req
     * @param {function(string, HaVipDisassociateAddressIpResponse):void} cb
     * @public
     */
    HaVipDisassociateAddressIp(req, cb) {
        let resp = new HaVipDisassociateAddressIpResponse();
        this.request("HaVipDisassociateAddressIp", req, resp, cb);
    }

    /**
     * This API is used to modify VPN gateway-based CCN routes.
     * @param {ModifyVpnGatewayCcnRoutesRequest} req
     * @param {function(string, ModifyVpnGatewayCcnRoutesResponse):void} cb
     * @public
     */
    ModifyVpnGatewayCcnRoutes(req, cb) {
        let resp = new ModifyVpnGatewayCcnRoutesResponse();
        this.request("ModifyVpnGatewayCcnRoutes", req, resp, cb);
    }

    /**
     * This API is used to unbind an ENI from a CVM.
This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {DetachNetworkInterfaceRequest} req
     * @param {function(string, DetachNetworkInterfaceResponse):void} cb
     * @public
     */
    DetachNetworkInterface(req, cb) {
        let resp = new DetachNetworkInterfaceResponse();
        this.request("DetachNetworkInterface", req, resp, cb);
    }

    /**
     * This API (ModifyServiceTemplateGroupAttribute) is used to modify a protocol port template group.
     * @param {ModifyServiceTemplateGroupAttributeRequest} req
     * @param {function(string, ModifyServiceTemplateGroupAttributeResponse):void} cb
     * @public
     */
    ModifyServiceTemplateGroupAttribute(req, cb) {
        let resp = new ModifyServiceTemplateGroupAttributeResponse();
        this.request("ModifyServiceTemplateGroupAttribute", req, resp, cb);
    }

    /**
     * This API is used to delete a secondary CIDR block.
     * @param {DeleteAssistantCidrRequest} req
     * @param {function(string, DeleteAssistantCidrResponse):void} cb
     * @public
     */
    DeleteAssistantCidr(req, cb) {
        let resp = new DeleteAssistantCidrResponse();
        this.request("DeleteAssistantCidr", req, resp, cb);
    }

    /**
     * This API is used to delete routes of a VPN gateway. 
     * @param {DeleteVpnGatewayRoutesRequest} req
     * @param {function(string, DeleteVpnGatewayRoutesResponse):void} cb
     * @public
     */
    DeleteVpnGatewayRoutes(req, cb) {
        let resp = new DeleteVpnGatewayRoutesResponse();
        this.request("DeleteVpnGatewayRoutes", req, resp, cb);
    }

    /**
     * This API is used to query the route reception policy entry list.
     * @param {DescribeRoutePolicyEntriesRequest} req
     * @param {function(string, DescribeRoutePolicyEntriesResponse):void} cb
     * @public
     */
    DescribeRoutePolicyEntries(req, cb) {
        let resp = new DescribeRoutePolicyEntriesResponse();
        this.request("DescribeRoutePolicyEntries", req, resp, cb);
    }

    /**
     * This API is used to delete route reception policy bindings (the binding relationship between route reception policy objects and route tables).
     * @param {DeleteRoutePolicyAssociationsRequest} req
     * @param {function(string, DeleteRoutePolicyAssociationsResponse):void} cb
     * @public
     */
    DeleteRoutePolicyAssociations(req, cb) {
        let resp = new DeleteRoutePolicyAssociationsResponse();
        this.request("DeleteRoutePolicyAssociations", req, resp, cb);
    }

    /**
     * This API is used to query the list of resources in a Bandwidth Package according to its unique ID, support conditional filtering of query results and paging query.
     * @param {DescribeBandwidthPackageResourcesRequest} req
     * @param {function(string, DescribeBandwidthPackageResourcesResponse):void} cb
     * @public
     */
    DescribeBandwidthPackageResources(req, cb) {
        let resp = new DescribeBandwidthPackageResourcesResponse();
        this.request("DescribeBandwidthPackageResources", req, resp, cb);
    }

    /**
     * This API is used to modify CCN-associated instance attributes. Currently, only the `description` can be modified.
     * @param {ModifyCcnAttachedInstancesAttributeRequest} req
     * @param {function(string, ModifyCcnAttachedInstancesAttributeResponse):void} cb
     * @public
     */
    ModifyCcnAttachedInstancesAttribute(req, cb) {
        let resp = new ModifyCcnAttachedInstancesAttributeResponse();
        this.request("ModifyCcnAttachedInstancesAttribute", req, resp, cb);
    }

    /**
     * This API is used to delete a SNAT forwarding rule of a NAT gateway.
     * @param {DeleteNatGatewaySourceIpTranslationNatRuleRequest} req
     * @param {function(string, DeleteNatGatewaySourceIpTranslationNatRuleResponse):void} cb
     * @public
     */
    DeleteNatGatewaySourceIpTranslationNatRule(req, cb) {
        let resp = new DeleteNatGatewaySourceIpTranslationNatRuleResponse();
        this.request("DeleteNatGatewaySourceIpTranslationNatRule", req, resp, cb);
    }

    /**
     * This API is used to delete an ENI.
* An ENI cannot be deleted when it’s bound to a CVM.
 * After the deletion, all of its private IP addresses will be released.

This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {DeleteNetworkInterfaceRequest} req
     * @param {function(string, DeleteNetworkInterfaceResponse):void} cb
     * @public
     */
    DeleteNetworkInterface(req, cb) {
        let resp = new DeleteNetworkInterfaceResponse();
        this.request("DeleteNetworkInterface", req, resp, cb);
    }

    /**
     * This API is used to modify the local gateway of a CDC instance.
     * @param {ModifyLocalGatewayRequest} req
     * @param {function(string, ModifyLocalGatewayResponse):void} cb
     * @public
     */
    ModifyLocalGateway(req, cb) {
        let resp = new ModifyLocalGatewayResponse();
        this.request("ModifyLocalGateway", req, resp, cb);
    }

    /**
     * This API is used to query the subnet resource.
     * @param {DescribeSubnetResourceDashboardRequest} req
     * @param {function(string, DescribeSubnetResourceDashboardResponse):void} cb
     * @public
     */
    DescribeSubnetResourceDashboard(req, cb) {
        let resp = new DescribeSubnetResourceDashboardResponse();
        this.request("DescribeSubnetResourceDashboard", req, resp, cb);
    }

    /**
     * This API is used to used to query the list of VPN tunnels.
     * @param {DescribeVpnConnectionsRequest} req
     * @param {function(string, DescribeVpnConnectionsResponse):void} cb
     * @public
     */
    DescribeVpnConnections(req, cb) {
        let resp = new DescribeVpnConnectionsResponse();
        this.request("DescribeVpnConnections", req, resp, cb);
    }

    /**
     * This API is used to enable gateway traffic monitor.
     * @param {EnableGatewayFlowMonitorRequest} req
     * @param {function(string, EnableGatewayFlowMonitorResponse):void} cb
     * @public
     */
    EnableGatewayFlowMonitor(req, cb) {
        let resp = new EnableGatewayFlowMonitorResponse();
        this.request("EnableGatewayFlowMonitor", req, resp, cb);
    }

    /**
     * This API is used to query the information of a flow log.
     * @param {DescribeFlowLogRequest} req
     * @param {function(string, DescribeFlowLogResponse):void} cb
     * @public
     */
    DescribeFlowLog(req, cb) {
        let resp = new DescribeFlowLogResponse();
        this.request("DescribeFlowLog", req, resp, cb);
    }

    /**
     * This API is used to adjust the bandwidth limit of a gateway.
     * @param {ModifyGatewayFlowQosRequest} req
     * @param {function(string, ModifyGatewayFlowQosResponse):void} cb
     * @public
     */
    ModifyGatewayFlowQos(req, cb) {
        let resp = new ModifyGatewayFlowQosResponse();
        this.request("ModifyGatewayFlowQos", req, resp, cb);
    }

    /**
     * This API is used to delete a NAT gateway.
When a NAT gateway is deleted, all routes containing this gateway are deleted automatically, and the elastic IP is unbound.
     * @param {DeleteNatGatewayRequest} req
     * @param {function(string, DeleteNatGatewayResponse):void} cb
     * @public
     */
    DeleteNatGateway(req, cb) {
        let resp = new DeleteNatGatewayResponse();
        this.request("DeleteNatGateway", req, resp, cb);
    }

    /**
     * This API is used to disable enabled subnet routes.
     * @param {DisableRoutesRequest} req
     * @param {function(string, DisableRoutesResponse):void} cb
     * @public
     */
    DisableRoutes(req, cb) {
        let resp = new DisableRoutesResponse();
        this.request("DisableRoutes", req, resp, cb);
    }

    /**
     * This API is used to query the outbound bandwidth caps of all regions connected with a CCN instance. The API only returns regions included in the associated network instances.
     * @param {DescribeCcnRegionBandwidthLimitsRequest} req
     * @param {function(string, DescribeCcnRegionBandwidthLimitsResponse):void} cb
     * @public
     */
    DescribeCcnRegionBandwidthLimits(req, cb) {
        let resp = new DescribeCcnRegionBandwidthLimitsResponse();
        this.request("DescribeCcnRegionBandwidthLimits", req, resp, cb);
    }

    /**
     * This API (ReplaceRouteTableAssociation) is used to modify the route table associated with a subnet.
* A subnet can only be associated with one route table.
     * @param {ReplaceRouteTableAssociationRequest} req
     * @param {function(string, ReplaceRouteTableAssociationResponse):void} cb
     * @public
     */
    ReplaceRouteTableAssociation(req, cb) {
        let resp = new ReplaceRouteTableAssociationResponse();
        this.request("ReplaceRouteTableAssociation", req, resp, cb);
    }

    /**
     * This API is used to withdraw a route from CCN. 
     * @param {WithdrawNotifyRoutesRequest} req
     * @param {function(string, WithdrawNotifyRoutesResponse):void} cb
     * @public
     */
    WithdrawNotifyRoutes(req, cb) {
        let resp = new WithdrawNotifyRoutesResponse();
        this.request("WithdrawNotifyRoutes", req, resp, cb);
    }

    /**
     * This API (DeleteServiceTemplate) is used to delete a protocol port template.
     * @param {DeleteServiceTemplateRequest} req
     * @param {function(string, DeleteServiceTemplateResponse):void} cb
     * @public
     */
    DeleteServiceTemplate(req, cb) {
        let resp = new DeleteServiceTemplateResponse();
        this.request("DeleteServiceTemplate", req, resp, cb);
    }

    /**
     * This API is used to return the private IP addresses of an ENI.
* If a secondary private IP of an ENI is returned, the EIP will be automatically unassociated as well. The primary private IP of the ENI cannot be returned.

This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {UnassignPrivateIpAddressesRequest} req
     * @param {function(string, UnassignPrivateIpAddressesResponse):void} cb
     * @public
     */
    UnassignPrivateIpAddresses(req, cb) {
        let resp = new UnassignPrivateIpAddressesResponse();
        this.request("UnassignPrivateIpAddresses", req, resp, cb);
    }

    /**
     * This API (DeleteAddressTemplateGroup) is used to delete an IP address template group.
     * @param {DeleteAddressTemplateGroupRequest} req
     * @param {function(string, DeleteAddressTemplateGroupResponse):void} cb
     * @public
     */
    DeleteAddressTemplateGroup(req, cb) {
        let resp = new DeleteAddressTemplateGroupResponse();
        this.request("DeleteAddressTemplateGroup", req, resp, cb);
    }

    /**
     * This API is used to query the IP usage of a subnet or VPC.
If the IP is occupied, the resource type and ID associated with the are is returned. If the IP is not used, it returns null.
     * @param {DescribeUsedIpAddressRequest} req
     * @param {function(string, DescribeUsedIpAddressResponse):void} cb
     * @public
     */
    DescribeUsedIpAddress(req, cb) {
        let resp = new DescribeUsedIpAddressResponse();
        this.request("DescribeUsedIpAddress", req, resp, cb);
    }

    /**
     * This API (DescribeCcnRoutes) is used to query routes that have been added to a CCN.
     * @param {DescribeCcnRoutesRequest} req
     * @param {function(string, DescribeCcnRoutesResponse):void} cb
     * @public
     */
    DescribeCcnRoutes(req, cb) {
        let resp = new DescribeCcnRoutesResponse();
        this.request("DescribeCcnRoutes", req, resp, cb);
    }

    /**
     * This API is used to query the maximum and used number of bandwidth packages under the account in the current region.
     * @param {DescribeBandwidthPackageQuotaRequest} req
     * @param {function(string, DescribeBandwidthPackageQuotaResponse):void} cb
     * @public
     */
    DescribeBandwidthPackageQuota(req, cb) {
        let resp = new DescribeBandwidthPackageQuotaResponse();
        this.request("DescribeBandwidthPackageQuota", req, resp, cb);
    }

    /**
     * This API is used to get a pair of VPN tunnel health check addresses. 
     * @param {GenerateVpnConnectionDefaultHealthCheckIpRequest} req
     * @param {function(string, GenerateVpnConnectionDefaultHealthCheckIpResponse):void} cb
     * @public
     */
    GenerateVpnConnectionDefaultHealthCheckIp(req, cb) {
        let resp = new GenerateVpnConnectionDefaultHealthCheckIpResponse();
        this.request("GenerateVpnConnectionDefaultHealthCheckIp", req, resp, cb);
    }

    /**
     * This API is used to reset the designated route reception policy entry based on the rule ID and supports batch modification.
     * @param {ResetRoutePolicyEntriesRequest} req
     * @param {function(string, ResetRoutePolicyEntriesResponse):void} cb
     * @public
     */
    ResetRoutePolicyEntries(req, cb) {
        let resp = new ResetRoutePolicyEntriesResponse();
        this.request("ResetRoutePolicyEntries", req, resp, cb);
    }

    /**
     * This API is used to batch create secondary CIDR blocks.
     * @param {CreateAssistantCidrRequest} req
     * @param {function(string, CreateAssistantCidrResponse):void} cb
     * @public
     */
    CreateAssistantCidr(req, cb) {
        let resp = new CreateAssistantCidrResponse();
        this.request("CreateAssistantCidr", req, resp, cb);
    }

    /**
     * This API is used to create a VPC with default settings.

To create a VPC with custom settings, such as VPC name, IP range, subnet IP range, and subnet availability zone, use `CreateVpc` instead.

This API may not create a default VPC. It depends on the network attributes (`DescribeAccountAttributes`) of your account.
* If both basic network and VPC are supported, the returned `VpcId` is 0.
* If only VPC is supported, the default VPC information is returned.

You can also use the `Force` parameter to forcibly return a default VPC.
     * @param {CreateDefaultVpcRequest} req
     * @param {function(string, CreateDefaultVpcResponse):void} cb
     * @public
     */
    CreateDefaultVpc(req, cb) {
        let resp = new CreateDefaultVpcResponse();
        this.request("CreateDefaultVpc", req, resp, cb);
    }

    /**
     * This API is used to bind an ENI to a CVM.
* An ENI must be bound with one security group at least. To bind it, see <a href="https://intl.cloud.tencent.com/document/product/215/43132?from_cn_redirect=1">AssociateNetworkInterfaceSecurityGroups</a>.
* One CVM can be bound with multiple ENIs, but only one can be the primary ENI. For more information about the limits, see <a href="https://intl.cloud.tencent.com/document/product/576/18527?from_cn_redirect=1">ENI Use Limits</a>.
* An ENI can only be bound to one CVM.
* Only the running or shutdown CVMs can be bound with ENIs. For more information about the CVM status, see <a href="https://intl.cloud.tencent.com/document/api/213/9452?from_cn_redirect=1#InstanceStatus">InstanceStatus</a> in the Data Types.
* An ENI can only be bound to a VPC-based CVM under the same availability zone as the ENI subnet.

This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {AttachNetworkInterfaceRequest} req
     * @param {function(string, AttachNetworkInterfaceResponse):void} cb
     * @public
     */
    AttachNetworkInterface(req, cb) {
        let resp = new AttachNetworkInterfaceResponse();
        this.request("AttachNetworkInterface", req, resp, cb);
    }

    /**
     * This API (ReleaseAddresses) is used to release one or multiple [Elastic IPs](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1).
* This operation is irreversible. Once you release an EIP, the IP address associated with the EIP no longer belongs to you.
* Only EIPs in UNBIND status can be released.
     * @param {ReleaseAddressesRequest} req
     * @param {function(string, ReleaseAddressesResponse):void} cb
     * @public
     */
    ReleaseAddresses(req, cb) {
        let resp = new ReleaseAddressesResponse();
        this.request("ReleaseAddresses", req, resp, cb);
    }

    /**
     * This API is used to delete a reserved private IP address.
     * @param {DeleteReserveIpAddressesRequest} req
     * @param {function(string, DeleteReserveIpAddressesResponse):void} cb
     * @public
     */
    DeleteReserveIpAddresses(req, cb) {
        let resp = new DeleteReserveIpAddressesResponse();
        this.request("DeleteReserveIpAddresses", req, resp, cb);
    }

    /**
     * This API is used to create a NAT Gateway.
Before taking actions on a NAT gateway, ensure that it has been successfully created, namely, the `State` field in the response of the `DescribeNatGateway` API is `AVAILABLE`.
     * @param {CreateNatGatewayRequest} req
     * @param {function(string, CreateNatGatewayResponse):void} cb
     * @public
     */
    CreateNatGateway(req, cb) {
        let resp = new CreateNatGatewayResponse();
        this.request("CreateNatGateway", req, resp, cb);
    }

    /**
     * This API is used to query the list of in/outbound network ACL quintuple entries.
     * @param {DescribeNetworkAclQuintupleEntriesRequest} req
     * @param {function(string, DescribeNetworkAclQuintupleEntriesResponse):void} cb
     * @public
     */
    DescribeNetworkAclQuintupleEntries(req, cb) {
        let resp = new DescribeNetworkAclQuintupleEntriesResponse();
        this.request("DescribeNetworkAclQuintupleEntries", req, resp, cb);
    }

    /**
     * This API is used to delete a network probe.
     * @param {DeleteNetDetectRequest} req
     * @param {function(string, DeleteNetDetectResponse):void} cb
     * @public
     */
    DeleteNetDetect(req, cb) {
        let resp = new DeleteNetDetectResponse();
        this.request("DeleteNetDetect", req, resp, cb);
    }

    /**
     * This API is used to query the price of creating a direct connect gateway.
     * @param {InquirePriceCreateDirectConnectGatewayRequest} req
     * @param {function(string, InquirePriceCreateDirectConnectGatewayResponse):void} cb
     * @public
     */
    InquirePriceCreateDirectConnectGateway(req, cb) {
        let resp = new InquirePriceCreateDirectConnectGatewayResponse();
        this.request("InquirePriceCreateDirectConnectGateway", req, resp, cb);
    }

    /**
     * This API (ModifySecurityGroupAttribute) is used to modify the attributes of a security group (SecurityGroupPolicy).
     * @param {ModifySecurityGroupAttributeRequest} req
     * @param {function(string, ModifySecurityGroupAttributeResponse):void} cb
     * @public
     */
    ModifySecurityGroupAttribute(req, cb) {
        let resp = new ModifySecurityGroupAttributeResponse();
        this.request("ModifySecurityGroupAttribute", req, resp, cb);
    }

    /**
     * This API (DeleteAddressTemplate) is used to delete an IP address template.
     * @param {DeleteAddressTemplateRequest} req
     * @param {function(string, DeleteAddressTemplateResponse):void} cb
     * @public
     */
    DeleteAddressTemplate(req, cb) {
        let resp = new DeleteAddressTemplateResponse();
        this.request("DeleteAddressTemplate", req, resp, cb);
    }

    /**
     * This API is used to publish a route to CCN. This can also be done by clicking "Publish to CCN" in the operation column on the page of route table list.
     * @param {NotifyRoutesRequest} req
     * @param {function(string, NotifyRoutesResponse):void} cb
     * @public
     */
    NotifyRoutes(req, cb) {
        let resp = new NotifyRoutesResponse();
        this.request("NotifyRoutes", req, resp, cb);
    }

    /**
     * This API is used to delete an endpoint service.


     * @param {DeleteVpcEndPointServiceRequest} req
     * @param {function(string, DeleteVpcEndPointServiceResponse):void} cb
     * @public
     */
    DeleteVpcEndPointService(req, cb) {
        let resp = new DeleteVpcEndPointServiceResponse();
        this.request("DeleteVpcEndPointService", req, resp, cb);
    }

    /**
     * This API is used to add one or more in/outbound rules of the network ACL quintuple.
     * @param {CreateNetworkAclQuintupleEntriesRequest} req
     * @param {function(string, CreateNetworkAclQuintupleEntriesResponse):void} cb
     * @public
     */
    CreateNetworkAclQuintupleEntries(req, cb) {
        let resp = new CreateNetworkAclQuintupleEntriesResponse();
        this.request("CreateNetworkAclQuintupleEntries", req, resp, cb);
    }

    /**
     * This API is used to delete an endpoint.
     * @param {DeleteVpcEndPointRequest} req
     * @param {function(string, DeleteVpcEndPointResponse):void} cb
     * @public
     */
    DeleteVpcEndPoint(req, cb) {
        let resp = new DeleteVpcEndPointResponse();
        this.request("DeleteVpcEndPoint", req, resp, cb);
    }

    /**
     * This API (DeleteVpnGateway) is used to delete a VPN gateway. Currently, only deletion of pay-as-you-go IPSEC gateway instances in running status is supported.
     * @param {DeleteVpnGatewayRequest} req
     * @param {function(string, DeleteVpnGatewayResponse):void} cb
     * @public
     */
    DeleteVpnGateway(req, cb) {
        let resp = new DeleteVpnGatewayResponse();
        this.request("DeleteVpnGateway", req, resp, cb);
    }

    /**
     * This API (CreateServiceTemplate) is used to create a protocol port template.
     * @param {CreateServiceTemplateRequest} req
     * @param {function(string, CreateServiceTemplateResponse):void} cb
     * @public
     */
    CreateServiceTemplate(req, cb) {
        let resp = new CreateServiceTemplateResponse();
        this.request("CreateServiceTemplate", req, resp, cb);
    }

    /**
     * This API (InquiryPriceAllocateAddresses) is used to query the price of purchasing EIPs.
     * @param {InquiryPriceAllocateAddressesRequest} req
     * @param {function(string, InquiryPriceAllocateAddressesResponse):void} cb
     * @public
     */
    InquiryPriceAllocateAddresses(req, cb) {
        let resp = new InquiryPriceAllocateAddressesResponse();
        this.request("InquiryPriceAllocateAddresses", req, resp, cb);
    }

    /**
     * This API (DeleteRoutes) is used to delete routing policies in batches from a route table.
     * @param {DeleteRoutesRequest} req
     * @param {function(string, DeleteRoutesResponse):void} cb
     * @public
     */
    DeleteRoutes(req, cb) {
        let resp = new DeleteRoutesResponse();
        this.request("DeleteRoutes", req, resp, cb);
    }

    /**
     * This API is used to modify the attributes of a direct connect gateway.

     * @param {ModifyDirectConnectGatewayAttributeRequest} req
     * @param {function(string, ModifyDirectConnectGatewayAttributeResponse):void} cb
     * @public
     */
    ModifyDirectConnectGatewayAttribute(req, cb) {
        let resp = new ModifyDirectConnectGatewayAttributeResponse();
        this.request("ModifyDirectConnectGatewayAttribute", req, resp, cb);
    }

    /**
     * This API (ModifyNetworkInterfaceAttribute) is used to modify ENI attributes.
     * @param {ModifyNetworkInterfaceAttributeRequest} req
     * @param {function(string, ModifyNetworkInterfaceAttributeResponse):void} cb
     * @public
     */
    ModifyNetworkInterfaceAttribute(req, cb) {
        let resp = new ModifyNetworkInterfaceAttributeResponse();
        this.request("ModifyNetworkInterfaceAttribute", req, resp, cb);
    }

    /**
     * This API is used to disable flow log.
     * @param {DisableFlowLogsRequest} req
     * @param {function(string, DisableFlowLogsResponse):void} cb
     * @public
     */
    DisableFlowLogs(req, cb) {
        let resp = new DisableFlowLogsResponse();
        this.request("DisableFlowLogs", req, resp, cb);
    }

    /**
     * This API is used to query the snapshot file contents.
     * @param {DescribeSgSnapshotFileContentRequest} req
     * @param {function(string, DescribeSgSnapshotFileContentResponse):void} cb
     * @public
     */
    DescribeSgSnapshotFileContent(req, cb) {
        let resp = new DescribeSgSnapshotFileContentResponse();
        this.request("DescribeSgSnapshotFileContent", req, resp, cb);
    }

    /**
     * This API (DescribeNetworkInterfaces) is used to query the ENI list.
     * @param {DescribeNetworkInterfacesRequest} req
     * @param {function(string, DescribeNetworkInterfacesResponse):void} cb
     * @public
     */
    DescribeNetworkInterfaces(req, cb) {
        let resp = new DescribeNetworkInterfacesResponse();
        this.request("DescribeNetworkInterfaces", req, resp, cb);
    }

    /**
     * This API is used to create a VPC route reception policy, including name, description and policy entries.
     * @param {CreateRoutePolicyRequest} req
     * @param {function(string, CreateRoutePolicyResponse):void} cb
     * @public
     */
    CreateRoutePolicy(req, cb) {
        let resp = new CreateRoutePolicyResponse();
        this.request("CreateRoutePolicy", req, resp, cb);
    }

    /**
     * This API (DisableCcnRoutes) is used to disable CCN routes that are already enabled.
     * @param {DisableCcnRoutesRequest} req
     * @param {function(string, DisableCcnRoutesResponse):void} cb
     * @public
     */
    DisableCcnRoutes(req, cb) {
        let resp = new DisableCcnRoutesResponse();
        this.request("DisableCcnRoutes", req, resp, cb);
    }

    /**
     * This API is used to query the endpoint service allowlist.
     * @param {DescribeVpcEndPointServiceWhiteListRequest} req
     * @param {function(string, DescribeVpcEndPointServiceWhiteListResponse):void} cb
     * @public
     */
    DescribeVpcEndPointServiceWhiteList(req, cb) {
        let resp = new DescribeVpcEndPointServiceWhiteListResponse();
        this.request("DescribeVpcEndPointServiceWhiteList", req, resp, cb);
    }

    /**
     * This API is used to release the IPv6 public network bandwidth of classic elastic public IPv6 instances.

- Classic elastic public IPv6 addresses still have the IPv6 private network communication capability after the public network bandwidth is released.
- To allocate IPV6 public network bandwidth, call the AllocateIp6AddressesBandwidth API.
     * @param {ReleaseIp6AddressesBandwidthRequest} req
     * @param {function(string, ReleaseIp6AddressesBandwidthResponse):void} cb
     * @public
     */
    ReleaseIp6AddressesBandwidth(req, cb) {
        let resp = new ReleaseIp6AddressesBandwidthResponse();
        this.request("ReleaseIp6AddressesBandwidth", req, resp, cb);
    }

    /**
     * This API is used to adjust the bandwidth of a [bandwidth package](https://www.tencentcloud.com/document/product/684/15245).
     * @param {ModifyBandwidthPackageBandwidthRequest} req
     * @param {function(string, ModifyBandwidthPackageBandwidthResponse):void} cb
     * @public
     */
    ModifyBandwidthPackageBandwidth(req, cb) {
        let resp = new ModifyBandwidthPackageBandwidthResponse();
        this.request("ModifyBandwidthPackageBandwidth", req, resp, cb);
    }

    /**
     * The API is used to reset a VPN tunnel.
     * @param {ResetVpnConnectionRequest} req
     * @param {function(string, ResetVpnConnectionResponse):void} cb
     * @public
     */
    ResetVpnConnection(req, cb) {
        let resp = new ResetVpnConnectionResponse();
        this.request("ResetVpnConnection", req, resp, cb);
    }

    /**
     * This API (CreateCustomerGateway) is used to create customer gateways.
     * @param {CreateCustomerGatewayRequest} req
     * @param {function(string, CreateCustomerGatewayResponse):void} cb
     * @public
     */
    CreateCustomerGateway(req, cb) {
        let resp = new CreateCustomerGatewayResponse();
        this.request("CreateCustomerGateway", req, resp, cb);
    }

    /**
     * This API is used to query the compliance review requests created by the user. 
A service provider can query all review requests created by any `APPID` under its account. Other users can only query their own review requests.
     * @param {DescribeCrossBorderComplianceRequest} req
     * @param {function(string, DescribeCrossBorderComplianceResponse):void} cb
     * @public
     */
    DescribeCrossBorderCompliance(req, cb) {
        let resp = new DescribeCrossBorderComplianceResponse();
        this.request("DescribeCrossBorderCompliance", req, resp, cb);
    }

    /**
     * This API is used to create an IP address template group.
     * @param {CreateAddressTemplateGroupRequest} req
     * @param {function(string, CreateAddressTemplateGroupResponse):void} cb
     * @public
     */
    CreateAddressTemplateGroup(req, cb) {
        let resp = new CreateAddressTemplateGroupResponse();
        this.request("CreateAddressTemplateGroup", req, resp, cb);
    }

    /**
     * This API is used to create a security group (SecurityGroup).
* Note the <a href="https://intl.cloud.tencent.com/document/product/213/12453?from_cn_redirect=1">maximum number of security groups</a> per project in each region under each account.
* Both the inbound and outbound rules for a newly created security group are "Deny All" by default. You need to call CreateSecurityGroupPolicies to set security group rules based on your needs.
* You can bind a tag when creating a security group. The tag list in the response indicates the tags that have been successfully added.
     * @param {CreateSecurityGroupRequest} req
     * @param {function(string, CreateSecurityGroupResponse):void} cb
     * @public
     */
    CreateSecurityGroup(req, cb) {
        let resp = new CreateSecurityGroupResponse();
        this.request("CreateSecurityGroup", req, resp, cb);
    }

    /**
     * This API is used by the service provider to perform a compliance audit.
* This API is only provided for service providers to audit compliance review requests received. Tencent Cloud will verify the identity of the service provider by the `APPID`. 
* The status of the review request can be changed between `APPROVED` and `DENY`.
     * @param {AuditCrossBorderComplianceRequest} req
     * @param {function(string, AuditCrossBorderComplianceResponse):void} cb
     * @public
     */
    AuditCrossBorderCompliance(req, cb) {
        let resp = new AuditCrossBorderComplianceResponse();
        this.request("AuditCrossBorderCompliance", req, resp, cb);
    }

    /**
     * This API is used to associate a network ACL with subnets in a VPC instance.
     * @param {AssociateNetworkAclSubnetsRequest} req
     * @param {function(string, AssociateNetworkAclSubnetsResponse):void} cb
     * @public
     */
    AssociateNetworkAclSubnets(req, cb) {
        let resp = new AssociateNetworkAclSubnetsResponse();
        this.request("AssociateNetworkAclSubnets", req, resp, cb);
    }

    /**
     * This API (DescribeVpnGateways) is used to query the VPN gateway list.
     * @param {DescribeVpnGatewaysRequest} req
     * @param {function(string, DescribeVpnGatewaysResponse):void} cb
     * @public
     */
    DescribeVpnGateways(req, cb) {
        let resp = new DescribeVpnGatewaysResponse();
        this.request("DescribeVpnGateways", req, resp, cb);
    }

    /**
     * This API (ModifySubnetAttribute) is used to modify subnet attributes.
     * @param {ModifySubnetAttributeRequest} req
     * @param {function(string, ModifySubnetAttributeResponse):void} cb
     * @public
     */
    ModifySubnetAttribute(req, cb) {
        let resp = new ModifySubnetAttributeResponse();
        this.request("ModifySubnetAttribute", req, resp, cb);
    }

    /**
     *  This API (DescribeVpcInstances) is used to query a list of VCM instances on VPC.
     * @param {DescribeVpcInstancesRequest} req
     * @param {function(string, DescribeVpcInstancesResponse):void} cb
     * @public
     */
    DescribeVpcInstances(req, cb) {
        let resp = new DescribeVpcInstancesResponse();
        this.request("DescribeVpcInstances", req, resp, cb);
    }

    /**
     * This API (CreateDirectConnectGatewayCcnRoutes) is used to create the CCN route (IDC IP range) of a Direct Connect gateway.
     * @param {CreateDirectConnectGatewayCcnRoutesRequest} req
     * @param {function(string, CreateDirectConnectGatewayCcnRoutesResponse):void} cb
     * @public
     */
    CreateDirectConnectGatewayCcnRoutes(req, cb) {
        let resp = new CreateDirectConnectGatewayCcnRoutesResponse();
        this.request("CreateDirectConnectGatewayCcnRoutes", req, resp, cb);
    }

    /**
     * This API is used to unbind and release public IPs. 
Note: Starting from Dec 15, 2022, CAM authorization is required for a sub-account to call this API. For more details, see [Authorization Guide](https://intl.cloud.tencent.com/document/product/598/34545?from_cn_redirect=1).
     * @param {ReturnNormalAddressesRequest} req
     * @param {function(string, ReturnNormalAddressesResponse):void} cb
     * @public
     */
    ReturnNormalAddresses(req, cb) {
        let resp = new ReturnNormalAddressesResponse();
        this.request("ReturnNormalAddresses", req, resp, cb);
    }

    /**
     * This API is used to query the routes between a NAT gateway and Direct Connect.
     * @param {DescribeNatGatewayDirectConnectGatewayRouteRequest} req
     * @param {function(string, DescribeNatGatewayDirectConnectGatewayRouteResponse):void} cb
     * @public
     */
    DescribeNatGatewayDirectConnectGatewayRoute(req, cb) {
        let resp = new DescribeNatGatewayDirectConnectGatewayRouteResponse();
        this.request("DescribeNatGatewayDirectConnectGatewayRoute", req, resp, cb);
    }

    /**
     * This API (ModifyIpv6AddressesAttribute) is used to modify the private IPv6 address attributes of an ENI.
     * @param {ModifyIpv6AddressesAttributeRequest} req
     * @param {function(string, ModifyIpv6AddressesAttributeResponse):void} cb
     * @public
     */
    ModifyIpv6AddressesAttribute(req, cb) {
        let resp = new ModifyIpv6AddressesAttributeResponse();
        this.request("ModifyIpv6AddressesAttribute", req, resp, cb);
    }

    /**
     * This API is used to query direct connect gateways.
     * @param {DescribeDirectConnectGatewaysRequest} req
     * @param {function(string, DescribeDirectConnectGatewaysResponse):void} cb
     * @public
     */
    DescribeDirectConnectGateways(req, cb) {
        let resp = new DescribeDirectConnectGatewaysResponse();
        this.request("DescribeDirectConnectGateways", req, resp, cb);
    }

    /**
     * This API (DescribeAccountAttributes) is used to query your account attributes.
     * @param {DescribeAccountAttributesRequest} req
     * @param {function(string, DescribeAccountAttributesResponse):void} cb
     * @public
     */
    DescribeAccountAttributes(req, cb) {
        let resp = new DescribeAccountAttributesResponse();
        this.request("DescribeAccountAttributes", req, resp, cb);
    }

    /**
     * This API is used to apply for an IPv6 address for the ENI. <br />
This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
* The number of IPs bound with an ENI is limited. For more information, see <a href="/document/product/576/18527">ENI Use Limits</a>.
* You can apply for a specified IPv6 address. Currently, the IPv6 address can only be used as a secondary IP, instead of the primary IP.
* The address must be an idle IP in the subnet to which the ENI belongs.
* When applying for one or more secondary IPv6 addresses for an ENI, the API will return the specified number of secondary IPv6 addresses in the subnet range where the ENI is located.
     * @param {AssignIpv6AddressesRequest} req
     * @param {function(string, AssignIpv6AddressesResponse):void} cb
     * @public
     */
    AssignIpv6Addresses(req, cb) {
        let resp = new AssignIpv6AddressesResponse();
        this.request("AssignIpv6Addresses", req, resp, cb);
    }

    /**
     * This API is used to delete route reception policy entries.
     * @param {DeleteRoutePolicyEntriesRequest} req
     * @param {function(string, DeleteRoutePolicyEntriesResponse):void} cb
     * @public
     */
    DeleteRoutePolicyEntries(req, cb) {
        let resp = new DeleteRoutePolicyEntriesResponse();
        this.request("DeleteRoutePolicyEntries", req, resp, cb);
    }

    /**
     * This API is used to query the location and network information of one or more IP addresses.
<font color="#FF0000">This API will be discontinued soon and is only available for existing users.</font>
     * @param {DescribeIpGeolocationInfosRequest} req
     * @param {function(string, DescribeIpGeolocationInfosResponse):void} cb
     * @public
     */
    DescribeIpGeolocationInfos(req, cb) {
        let resp = new DescribeIpGeolocationInfosResponse();
        this.request("DescribeIpGeolocationInfos", req, resp, cb);
    }

    /**
     * This API is used to disassociate a snapshot policy with instances.
     * @param {DetachSnapshotInstancesRequest} req
     * @param {function(string, DetachSnapshotInstancesResponse):void} cb
     * @public
     */
    DetachSnapshotInstances(req, cb) {
        let resp = new DetachSnapshotInstancesResponse();
        this.request("DetachSnapshotInstances", req, resp, cb);
    }

    /**
     * This API (DescribeServiceTemplates) is used to query protocol port templates.
     * @param {DescribeServiceTemplatesRequest} req
     * @param {function(string, DescribeServiceTemplatesResponse):void} cb
     * @public
     */
    DescribeServiceTemplates(req, cb) {
        let resp = new DescribeServiceTemplatesResponse();
        this.request("DescribeServiceTemplates", req, resp, cb);
    }

    /**
     * This API (UnassignIpv6CidrBlock) is used to release IPv6 IP ranges.
If the IP range still has occupied IPs that are not yet repossessed, the IP range cannot be released.
     * @param {UnassignIpv6CidrBlockRequest} req
     * @param {function(string, UnassignIpv6CidrBlockResponse):void} cb
     * @public
     */
    UnassignIpv6CidrBlock(req, cb) {
        let resp = new UnassignIpv6CidrBlockResponse();
        this.request("UnassignIpv6CidrBlock", req, resp, cb);
    }

    /**
     * This API is used to query the current billable usage of a pay-as-you-go bandwidth package.
     * @param {DescribeBandwidthPackageBillUsageRequest} req
     * @param {function(string, DescribeBandwidthPackageBillUsageResponse):void} cb
     * @public
     */
    DescribeBandwidthPackageBillUsage(req, cb) {
        let resp = new DescribeBandwidthPackageBillUsageResponse();
        this.request("DescribeBandwidthPackageBillUsage", req, resp, cb);
    }

    /**
     * This API is used to modify the port forwarding rule of a NAT gateway.
     * @param {ModifyNatGatewayDestinationIpPortTranslationNatRuleRequest} req
     * @param {function(string, ModifyNatGatewayDestinationIpPortTranslationNatRuleResponse):void} cb
     * @public
     */
    ModifyNatGatewayDestinationIpPortTranslationNatRule(req, cb) {
        let resp = new ModifyNatGatewayDestinationIpPortTranslationNatRuleResponse();
        this.request("ModifyNatGatewayDestinationIpPortTranslationNatRule", req, resp, cb);
    }

    /**
     * This API is used to bind an EIP to an HAVIP. <br />
This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {HaVipAssociateAddressIpRequest} req
     * @param {function(string, HaVipAssociateAddressIpResponse):void} cb
     * @public
     */
    HaVipAssociateAddressIp(req, cb) {
        let resp = new HaVipAssociateAddressIpResponse();
        this.request("HaVipAssociateAddressIp", req, resp, cb);
    }

    /**
     * This API is used to create SNAT rules for a NAT gateway.
     * @param {CreateNatGatewaySourceIpTranslationNatRuleRequest} req
     * @param {function(string, CreateNatGatewaySourceIpTranslationNatRuleResponse):void} cb
     * @public
     */
    CreateNatGatewaySourceIpTranslationNatRule(req, cb) {
        let resp = new CreateNatGatewaySourceIpTranslationNatRuleResponse();
        this.request("CreateNatGatewaySourceIpTranslationNatRule", req, resp, cb);
    }

    /**
     * This API is used to add a parameter template of the IP address, protocol port, IP address group, or protocol port group type.
     * @param {AddTemplateMemberRequest} req
     * @param {function(string, AddTemplateMemberResponse):void} cb
     * @public
     */
    AddTemplateMember(req, cb) {
        let resp = new AddTemplateMemberResponse();
        this.request("AddTemplateMember", req, resp, cb);
    }

    /**
     * This API is used to unbind the routing policy instance already bound to a specific route table instance, set up alarms for the new binding routing policy and priority.
     * @param {ResetRoutePolicyAssociationsRequest} req
     * @param {function(string, ResetRoutePolicyAssociationsResponse):void} cb
     * @public
     */
    ResetRoutePolicyAssociations(req, cb) {
        let resp = new ResetRoutePolicyAssociationsResponse();
        this.request("ResetRoutePolicyAssociations", req, resp, cb);
    }

    /**
     * This API is used to adjust the renewal flag for the monthly subscription EIP.
     * @param {ModifyAddressesRenewFlagRequest} req
     * @param {function(string, ModifyAddressesRenewFlagResponse):void} cb
     * @public
     */
    ModifyAddressesRenewFlag(req, cb) {
        let resp = new ModifyAddressesRenewFlagResponse();
        this.request("ModifyAddressesRenewFlag", req, resp, cb);
    }

    /**
     * This API (DescribeHaVips) is used to query the list of highly available virtual IPs (HAVIP).
     * @param {DescribeHaVipsRequest} req
     * @param {function(string, DescribeHaVipsResponse):void} cb
     * @public
     */
    DescribeHaVips(req, cb) {
        let resp = new DescribeHaVipsResponse();
        this.request("DescribeHaVips", req, resp, cb);
    }

    /**
     * This API (UnassignIpv6SubnetCidrBlock) is used to release IPv6 subnet IP ranges.
If the subnet IP range still has occupied IPs that are not yet repossessed, the subnet IP range cannot be released.
     * @param {UnassignIpv6SubnetCidrBlockRequest} req
     * @param {function(string, UnassignIpv6SubnetCidrBlockResponse):void} cb
     * @public
     */
    UnassignIpv6SubnetCidrBlock(req, cb) {
        let resp = new UnassignIpv6SubnetCidrBlockResponse();
        this.request("UnassignIpv6SubnetCidrBlock", req, resp, cb);
    }

    /**
     * This API is used to create a local gateway for a CDC instance.
     * @param {CreateLocalGatewayRequest} req
     * @param {function(string, CreateLocalGatewayResponse):void} cb
     * @public
     */
    CreateLocalGateway(req, cb) {
        let resp = new CreateLocalGatewayResponse();
        this.request("CreateLocalGateway", req, resp, cb);
    }

    /**
     * This API (AssociateNetworkInterfaceSecurityGroups) is used to attach a security group to an ENI.
     * @param {AssociateNetworkInterfaceSecurityGroupsRequest} req
     * @param {function(string, AssociateNetworkInterfaceSecurityGroupsResponse):void} cb
     * @public
     */
    AssociateNetworkInterfaceSecurityGroups(req, cb) {
        let resp = new AssociateNetworkInterfaceSecurityGroupsResponse();
        this.request("AssociateNetworkInterfaceSecurityGroups", req, resp, cb);
    }

    /**
     * This API is used to delete an HAVIP. <br />
This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {DeleteHaVipRequest} req
     * @param {function(string, DeleteHaVipResponse):void} cb
     * @public
     */
    DeleteHaVip(req, cb) {
        let resp = new DeleteHaVipResponse();
        this.request("DeleteHaVip", req, resp, cb);
    }

    /**
     * This API is used to modify the attributes of a bandwidth package, including the bandwidth package name, and so on.
     * @param {ModifyBandwidthPackageAttributeRequest} req
     * @param {function(string, ModifyBandwidthPackageAttributeResponse):void} cb
     * @public
     */
    ModifyBandwidthPackageAttribute(req, cb) {
        let resp = new ModifyBandwidthPackageAttributeResponse();
        this.request("ModifyBandwidthPackageAttribute", req, resp, cb);
    }

    /**
     * This API is used to create an IP address template.
     * @param {CreateAddressTemplateRequest} req
     * @param {function(string, CreateAddressTemplateResponse):void} cb
     * @public
     */
    CreateAddressTemplate(req, cb) {
        let resp = new CreateAddressTemplateResponse();
        this.request("CreateAddressTemplate", req, resp, cb);
    }

    /**
     * This API (ModifyVpnGatewayAttribute) is used to modify the attributes of VPN gateways.
     * @param {ModifyVpnGatewayAttributeRequest} req
     * @param {function(string, ModifyVpnGatewayAttributeResponse):void} cb
     * @public
     */
    ModifyVpnGatewayAttribute(req, cb) {
        let resp = new ModifyVpnGatewayAttributeResponse();
        this.request("ModifyVpnGatewayAttribute", req, resp, cb);
    }

    /**
     * This API is used to adjust the bandwidth cap of a VPN gateway. The adjustment of the VPN gateway bandwidth is limited to [5,100] Mbps and [200,1000] Mbps. 
     * @param {ResetVpnGatewayInternetMaxBandwidthRequest} req
     * @param {function(string, ResetVpnGatewayInternetMaxBandwidthResponse):void} cb
     * @public
     */
    ResetVpnGatewayInternetMaxBandwidth(req, cb) {
        let resp = new ResetVpnGatewayInternetMaxBandwidthResponse();
        this.request("ResetVpnGatewayInternetMaxBandwidth", req, resp, cb);
    }

    /**
     * This API (DeleteVpc) is used to delete VPCs.
* Before deleting a VPC, ensure that the VPC contains no resources, including CVMs, cloud databases, NoSQL databases, VPN gateways, direct connect gateways, load balancers, peering connections, and basic network devices that are linked to the VPC.
* The deletion of VPCs is irreversible. Proceed with caution.
     * @param {DeleteVpcRequest} req
     * @param {function(string, DeleteVpcResponse):void} cb
     * @public
     */
    DeleteVpc(req, cb) {
        let resp = new DeleteVpcResponse();
        this.request("DeleteVpc", req, resp, cb);
    }

    /**
     * This API (DescribeSubnets) is used to query the list of subnets.
     * @param {DescribeSubnetsRequest} req
     * @param {function(string, DescribeSubnetsResponse):void} cb
     * @public
     */
    DescribeSubnets(req, cb) {
        let resp = new DescribeSubnetsResponse();
        this.request("DescribeSubnets", req, resp, cb);
    }

    /**
     * This API is used to unbind an EIPv6 instance.

- You can unbind EIPv6 instances bound to Cloud Virtual Machine (CVM) or Elastic Network Interface (ENI).
- Only EIPv6 instances in BIND or BIND_ENI status can be unbound.
     * @param {DisassociateIPv6AddressRequest} req
     * @param {function(string, DisassociateIPv6AddressResponse):void} cb
     * @public
     */
    DisassociateIPv6Address(req, cb) {
        let resp = new DisassociateIPv6AddressResponse();
        this.request("DisassociateIPv6Address", req, resp, cb);
    }

    /**
     * This API (DescribeAddressQuota) is used to query the quota information of your [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1) (EIP) in the current region. For more information, see [EIP product introduction](https://intl.cloud.tencent.com/document/product/213/5733?from_cn_redirect=1).
     * @param {DescribeAddressQuotaRequest} req
     * @param {function(string, DescribeAddressQuotaResponse):void} cb
     * @public
     */
    DescribeAddressQuota(req, cb) {
        let resp = new DescribeAddressQuotaResponse();
        this.request("DescribeAddressQuota", req, resp, cb);
    }

    /**
     * This API is used to create a CCN instance.
* You can add tags to a CCN instance upon the creation. The tags are added successfully if they are listed in the response.
* There is a quota of CCN instances for each account. For more information, see product documentation. To increase the quota, please submit a ticket.
     * @param {CreateCcnRequest} req
     * @param {function(string, CreateCcnResponse):void} cb
     * @public
     */
    CreateCcn(req, cb) {
        let resp = new CreateCcnResponse();
        this.request("CreateCcn", req, resp, cb);
    }

    /**
     * This API (ModifyCustomerGatewayAttribute) is used to modify the customer gateway information.
     * @param {ModifyCustomerGatewayAttributeRequest} req
     * @param {function(string, ModifyCustomerGatewayAttributeResponse):void} cb
     * @public
     */
    ModifyCustomerGatewayAttribute(req, cb) {
        let resp = new ModifyCustomerGatewayAttributeResponse();
        this.request("ModifyCustomerGatewayAttribute", req, resp, cb);
    }

    /**
     * This API is used to query a list of network ACLs.
     * @param {DescribeNetworkAclsRequest} req
     * @param {function(string, DescribeNetworkAclsResponse):void} cb
     * @public
     */
    DescribeNetworkAcls(req, cb) {
        let resp = new DescribeNetworkAclsResponse();
        this.request("DescribeNetworkAcls", req, resp, cb);
    }

    /**
     * This API (ModifyVpnConnectionAttribute) is used to modify VPN tunnels.
     * @param {ModifyVpnConnectionAttributeRequest} req
     * @param {function(string, ModifyVpnConnectionAttributeResponse):void} cb
     * @public
     */
    ModifyVpnConnectionAttribute(req, cb) {
        let resp = new ModifyVpnConnectionAttributeResponse();
        this.request("ModifyVpnConnectionAttribute", req, resp, cb);
    }

    /**
     * This API (DescribeSecurityGroups) is used to query security groups.
     * @param {DescribeSecurityGroupsRequest} req
     * @param {function(string, DescribeSecurityGroupsResponse):void} cb
     * @public
     */
    DescribeSecurityGroups(req, cb) {
        let resp = new DescribeSecurityGroupsResponse();
        this.request("DescribeSecurityGroups", req, resp, cb);
    }

    /**
     * This API (CreateVpnGateway) is used to create a VPN gateway.
     * @param {CreateVpnGatewayRequest} req
     * @param {function(string, CreateVpnGatewayResponse):void} cb
     * @public
     */
    CreateVpnGateway(req, cb) {
        let resp = new CreateVpnGatewayResponse();
        this.request("CreateVpnGateway", req, resp, cb);
    }

    /**
     * This API is used to query the details of shared traffic packages.
     * @param {DescribeTrafficPackagesRequest} req
     * @param {function(string, DescribeTrafficPackagesResponse):void} cb
     * @public
     */
    DescribeTrafficPackages(req, cb) {
        let resp = new DescribeTrafficPackagesResponse();
        this.request("DescribeTrafficPackages", req, resp, cb);
    }

    /**
     * This API (DescribeSecurityGroupPolicies) is used to query security group policies.
     * @param {DescribeSecurityGroupPoliciesRequest} req
     * @param {function(string, DescribeSecurityGroupPoliciesResponse):void} cb
     * @public
     */
    DescribeSecurityGroupPolicies(req, cb) {
        let resp = new DescribeSecurityGroupPoliciesResponse();
        this.request("DescribeSecurityGroupPolicies", req, resp, cb);
    }

    /**
     * This API is used to query the list of secondary CIDR blocks.
     * @param {DescribeAssistantCidrRequest} req
     * @param {function(string, DescribeAssistantCidrResponse):void} cb
     * @public
     */
    DescribeAssistantCidr(req, cb) {
        let resp = new DescribeAssistantCidrResponse();
        this.request("DescribeAssistantCidr", req, resp, cb);
    }

    /**
     * This API (ReplaceDirectConnectGatewayCcnRoutes) is used to modify the specified route according to the route ID. Batch modification is supported.
     * @param {ReplaceDirectConnectGatewayCcnRoutesRequest} req
     * @param {function(string, ReplaceDirectConnectGatewayCcnRoutesResponse):void} cb
     * @public
     */
    ReplaceDirectConnectGatewayCcnRoutes(req, cb) {
        let resp = new ReplaceDirectConnectGatewayCcnRoutesResponse();
        this.request("ReplaceDirectConnectGatewayCcnRoutes", req, resp, cb);
    }

    /**
     * This API is used to create a direct connect gateway.
     * @param {CreateDirectConnectGatewayRequest} req
     * @param {function(string, CreateDirectConnectGatewayResponse):void} cb
     * @public
     */
    CreateDirectConnectGateway(req, cb) {
        let resp = new CreateDirectConnectGatewayResponse();
        this.request("CreateDirectConnectGateway", req, resp, cb);
    }

    /**
     * This API (DescribeClassicLinkInstances) is used to query the Classiclink instances list.
     * @param {DescribeClassicLinkInstancesRequest} req
     * @param {function(string, DescribeClassicLinkInstancesResponse):void} cb
     * @public
     */
    DescribeClassicLinkInstances(req, cb) {
        let resp = new DescribeClassicLinkInstancesResponse();
        this.request("DescribeClassicLinkInstances", req, resp, cb);
    }

    /**
     * This API is used to create a reserved private IP address.
     * @param {CreateReserveIpAddressesRequest} req
     * @param {function(string, CreateReserveIpAddressesResponse):void} cb
     * @public
     */
    CreateReserveIpAddresses(req, cb) {
        let resp = new CreateReserveIpAddressesResponse();
        this.request("CreateReserveIpAddresses", req, resp, cb);
    }

    /**
     * This API is used to enable disabled subnet routes.<br />
The API is used to verify whether the enabled route conflicts with existing routes. If they conflict, the new route cannot be enabled and will result in a failure. When a route conflict occurs, you need to first disable the conflicting route before you can enable the new one.
     * @param {EnableRoutesRequest} req
     * @param {function(string, EnableRoutesResponse):void} cb
     * @public
     */
    EnableRoutes(req, cb) {
        let resp = new EnableRoutesResponse();
        this.request("EnableRoutes", req, resp, cb);
    }

    /**
     * This API (SetCcnRegionBandwidthLimits) is used to set the outbound bandwidth cap for CCNs in each region. This API can only set the outbound bandwidth cap for regions in the network instances that have already been associated.
     * @param {SetCcnRegionBandwidthLimitsRequest} req
     * @param {function(string, SetCcnRegionBandwidthLimitsResponse):void} cb
     * @public
     */
    SetCcnRegionBandwidthLimits(req, cb) {
        let resp = new SetCcnRegionBandwidthLimitsResponse();
        this.request("SetCcnRegionBandwidthLimits", req, resp, cb);
    }

    /**
     * This API is used to create a highly available virtual IP (HAVIP).
     * @param {CreateHaVipRequest} req
     * @param {function(string, CreateHaVipResponse):void} cb
     * @public
     */
    CreateHaVip(req, cb) {
        let resp = new CreateHaVipResponse();
        this.request("CreateHaVip", req, resp, cb);
    }

    /**
     * This API (ModifyServiceTemplateAttribute) is used to modify a protocol port template.
     * @param {ModifyServiceTemplateAttributeRequest} req
     * @param {function(string, ModifyServiceTemplateAttributeResponse):void} cb
     * @public
     */
    ModifyServiceTemplateAttribute(req, cb) {
        let resp = new ModifyServiceTemplateAttributeResponse();
        this.request("ModifyServiceTemplateAttribute", req, resp, cb);
    }

    /**
     * This API (DeleteSecurityGroup) is used to delete security groups (SecurityGroup).
* Only security groups under the current account can be deleted.
* A security group cannot be deleted directly if its instance ID is used in the policy of another security group. You need to modify the policy first and then delete the security group.
* A security group cannot be recovered after deletion, please proceed with caution.
     * @param {DeleteSecurityGroupRequest} req
     * @param {function(string, DeleteSecurityGroupResponse):void} cb
     * @public
     */
    DeleteSecurityGroup(req, cb) {
        let resp = new DeleteSecurityGroupResponse();
        this.request("DeleteSecurityGroup", req, resp, cb);
    }

    /**
     * This API is used to apply for one or more Elastic IPv6 (EIPv6) instances.

- EIPv6 is a fixed public IPv6 address that can be independently applied for and held in a Tencent Cloud region, providing a consistent product experience with Elastic IPv4.
- You can quickly bind an EIPv6 instance to the private IPv6 address of a cloud resource, so as to quickly enable IPv6 public bandwidth for the cloud resource.
- You can also bind an EIPv6 instance to other cloud resources as needed, so as to shield instance failures.
     * @param {AllocateIPv6AddressesRequest} req
     * @param {function(string, AllocateIPv6AddressesResponse):void} cb
     * @public
     */
    AllocateIPv6Addresses(req, cb) {
        let resp = new AllocateIPv6AddressesResponse();
        this.request("AllocateIPv6Addresses", req, resp, cb);
    }

    /**
     * This API is used to query the NAT gateway's SNAT forwarding rules.
     * @param {DescribeNatGatewaySourceIpTranslationNatRulesRequest} req
     * @param {function(string, DescribeNatGatewaySourceIpTranslationNatRulesResponse):void} cb
     * @public
     */
    DescribeNatGatewaySourceIpTranslationNatRules(req, cb) {
        let resp = new DescribeNatGatewaySourceIpTranslationNatRulesResponse();
        this.request("DescribeNatGatewaySourceIpTranslationNatRules", req, resp, cb);
    }

    /**
     * This API (EnableCcnRoutes) is used to enable CCN routes that are already added.<br />
This API is used to verify whether there will be conflict with an existing route after a CCN route is enabled. If there is a conflict, the route will not be enabled, and the process will fail. When a conflict occurs, you must disable the conflicting route before you can enable the desired route.
     * @param {EnableCcnRoutesRequest} req
     * @param {function(string, EnableCcnRoutesResponse):void} cb
     * @public
     */
    EnableCcnRoutes(req, cb) {
        let resp = new EnableCcnRoutesResponse();
        this.request("EnableCcnRoutes", req, resp, cb);
    }

    /**
     * This API (ModifyRouteTableAttribute) is used to modify the attributes of a route table.
     * @param {ModifyRouteTableAttributeRequest} req
     * @param {function(string, ModifyRouteTableAttributeResponse):void} cb
     * @public
     */
    ModifyRouteTableAttribute(req, cb) {
        let resp = new ModifyRouteTableAttributeResponse();
        this.request("ModifyRouteTableAttribute", req, resp, cb);
    }

    /**
     * This API (ReplaceRoutes) is used to modify a specified routing policy by its ID (RouteId). Batch modification is supported.
     * @param {ReplaceRoutesRequest} req
     * @param {function(string, ReplaceRoutesResponse):void} cb
     * @public
     */
    ReplaceRoutes(req, cb) {
        let resp = new ReplaceRoutesResponse();
        this.request("ReplaceRoutes", req, resp, cb);
    }

    /**
     * This API is used to batch modify (add or delete) secondary CIDR blocks.
     * @param {ModifyAssistantCidrRequest} req
     * @param {function(string, ModifyAssistantCidrResponse):void} cb
     * @public
     */
    ModifyAssistantCidr(req, cb) {
        let resp = new ModifyAssistantCidrResponse();
        this.request("ModifyAssistantCidr", req, resp, cb);
    }

    /**
     * This API (ModifyNetDetect) is used to modify network detection parameters.
     * @param {ModifyNetDetectRequest} req
     * @param {function(string, ModifyNetDetectResponse):void} cb
     * @public
     */
    ModifyNetDetect(req, cb) {
        let resp = new ModifyNetDetectResponse();
        this.request("ModifyNetDetect", req, resp, cb);
    }

    /**
     * This API is used to disable gateway traffic monitor.
     * @param {DisableGatewayFlowMonitorRequest} req
     * @param {function(string, DisableGatewayFlowMonitorResponse):void} cb
     * @public
     */
    DisableGatewayFlowMonitor(req, cb) {
        let resp = new DisableGatewayFlowMonitorResponse();
        this.request("DisableGatewayFlowMonitor", req, resp, cb);
    }

    /**
     * This API is used to delete the port forwarding rule of a NAT gateway.
     * @param {DeleteNatGatewayDestinationIpPortTranslationNatRuleRequest} req
     * @param {function(string, DeleteNatGatewayDestinationIpPortTranslationNatRuleResponse):void} cb
     * @public
     */
    DeleteNatGatewayDestinationIpPortTranslationNatRule(req, cb) {
        let resp = new DeleteNatGatewayDestinationIpPortTranslationNatRuleResponse();
        this.request("DeleteNatGatewayDestinationIpPortTranslationNatRule", req, resp, cb);
    }

    /**
     * This API is used to create routes. 
* You can batch add routes to a specified route table.
     * @param {CreateRoutesRequest} req
     * @param {function(string, CreateRoutesResponse):void} cb
     * @public
     */
    CreateRoutes(req, cb) {
        let resp = new CreateRoutesResponse();
        this.request("CreateRoutes", req, resp, cb);
    }

    /**
     * This API is used to create a network probe.
     * @param {CreateNetDetectRequest} req
     * @param {function(string, CreateNetDetectResponse):void} cb
     * @public
     */
    CreateNetDetect(req, cb) {
        let resp = new CreateNetDetectResponse();
        this.request("CreateNetDetect", req, resp, cb);
    }

    /**
     * This API is used to create snapshot policies.
     * @param {CreateSnapshotPoliciesRequest} req
     * @param {function(string, CreateSnapshotPoliciesResponse):void} cb
     * @public
     */
    CreateSnapshotPolicies(req, cb) {
        let resp = new CreateSnapshotPoliciesResponse();
        this.request("CreateSnapshotPolicies", req, resp, cb);
    }

    /**
     * This API is used to query snapshot files.
     * @param {DescribeSnapshotFilesRequest} req
     * @param {function(string, DescribeSnapshotFilesResponse):void} cb
     * @public
     */
    DescribeSnapshotFiles(req, cb) {
        let resp = new DescribeSnapshotFilesResponse();
        this.request("DescribeSnapshotFiles", req, resp, cb);
    }

    /**
     * This API is used to modify the VPC endpoint service attributes.


     * @param {ModifyVpcEndPointServiceAttributeRequest} req
     * @param {function(string, ModifyVpcEndPointServiceAttributeResponse):void} cb
     * @public
     */
    ModifyVpcEndPointServiceAttribute(req, cb) {
        let resp = new ModifyVpcEndPointServiceAttributeResponse();
        this.request("ModifyVpcEndPointServiceAttribute", req, resp, cb);
    }

    /**
     * This API is used to query bandwidth package information, including the unique ID of the bandwidth package, the type, the billing mode, the name, and the resource information.
     * @param {DescribeBandwidthPackagesRequest} req
     * @param {function(string, DescribeBandwidthPackagesResponse):void} cb
     * @public
     */
    DescribeBandwidthPackages(req, cb) {
        let resp = new DescribeBandwidthPackagesResponse();
        this.request("DescribeBandwidthPackages", req, resp, cb);
    }

    /**
     * This API (CreateServiceTemplateGroup) is used to create a protocol port template group.
     * @param {CreateServiceTemplateGroupRequest} req
     * @param {function(string, CreateServiceTemplateGroupResponse):void} cb
     * @public
     */
    CreateServiceTemplateGroup(req, cb) {
        let resp = new CreateServiceTemplateGroupResponse();
        this.request("CreateServiceTemplateGroup", req, resp, cb);
    }

    /**
     * This API is used to query reserved private IP addresses.
     * @param {DescribeReserveIpAddressesRequest} req
     * @param {function(string, DescribeReserveIpAddressesResponse):void} cb
     * @public
     */
    DescribeReserveIpAddresses(req, cb) {
        let resp = new DescribeReserveIpAddressesResponse();
        this.request("DescribeReserveIpAddresses", req, resp, cb);
    }

    /**
     * This API is used to release one or more EIPv6 instances.

- You can release the obtained EIPv6 instances. To use them again, please reapply.
- Only EIPv6 instances in UNBIND status can be released.
     * @param {ReleaseIPv6AddressesRequest} req
     * @param {function(string, ReleaseIPv6AddressesResponse):void} cb
     * @public
     */
    ReleaseIPv6Addresses(req, cb) {
        let resp = new ReleaseIPv6AddressesResponse();
        this.request("ReleaseIPv6Addresses", req, resp, cb);
    }

    /**
     * This API is used to migrate ENIs.
This API is completed asynchronously. If you need to query the execution result of an async task, please use the `RequestId` returned by this API to poll the `DescribeVpcTaskResult` API.
     * @param {MigrateNetworkInterfaceRequest} req
     * @param {function(string, MigrateNetworkInterfaceResponse):void} cb
     * @public
     */
    MigrateNetworkInterface(req, cb) {
        let resp = new MigrateNetworkInterfaceResponse();
        this.request("MigrateNetworkInterface", req, resp, cb);
    }

    /**
     * This API (ModifyCcnAttribute) is used to modify CCN attributes.
     * @param {ModifyCcnAttributeRequest} req
     * @param {function(string, ModifyCcnAttributeResponse):void} cb
     * @public
     */
    ModifyCcnAttribute(req, cb) {
        let resp = new ModifyCcnAttributeResponse();
        this.request("ModifyCcnAttribute", req, resp, cb);
    }

    /**
     * This API is used to restore security group policies with a backup.
     * @param {ResumeSnapshotInstanceRequest} req
     * @param {function(string, ResumeSnapshotInstanceResponse):void} cb
     * @public
     */
    ResumeSnapshotInstance(req, cb) {
        let resp = new ResumeSnapshotInstanceResponse();
        this.request("ResumeSnapshotInstance", req, resp, cb);
    }

    /**
     * This API (DescribeSecurityGroupReferences) is used to query referred security groups.
     * @param {DescribeSecurityGroupReferencesRequest} req
     * @param {function(string, DescribeSecurityGroupReferencesResponse):void} cb
     * @public
     */
    DescribeSecurityGroupReferences(req, cb) {
        let resp = new DescribeSecurityGroupReferencesResponse();
        this.request("DescribeSecurityGroupReferences", req, resp, cb);
    }

    /**
     * This API (DescribeSecurityGroupAssociationStatistics) is used to query statistics on the instances associated with a security group.
     * @param {DescribeSecurityGroupAssociationStatisticsRequest} req
     * @param {function(string, DescribeSecurityGroupAssociationStatisticsResponse):void} cb
     * @public
     */
    DescribeSecurityGroupAssociationStatistics(req, cb) {
        let resp = new DescribeSecurityGroupAssociationStatisticsResponse();
        this.request("DescribeSecurityGroupAssociationStatistics", req, resp, cb);
    }

    /**
     * This API is used to query snapshot policies.
     * @param {DescribeSnapshotPoliciesRequest} req
     * @param {function(string, DescribeSnapshotPoliciesResponse):void} cb
     * @public
     */
    DescribeSnapshotPolicies(req, cb) {
        let resp = new DescribeSnapshotPoliciesResponse();
        this.request("DescribeSnapshotPolicies", req, resp, cb);
    }

    /**
     * This API is used to obtain the download link of an IP location database.
<font color="#FF0000">This API will be discontinued soon and is only available for existing users.</font>
     * @param {DescribeIpGeolocationDatabaseUrlRequest} req
     * @param {function(string, DescribeIpGeolocationDatabaseUrlResponse):void} cb
     * @public
     */
    DescribeIpGeolocationDatabaseUrl(req, cb) {
        let resp = new DescribeIpGeolocationDatabaseUrlResponse();
        this.request("DescribeIpGeolocationDatabaseUrl", req, resp, cb);
    }

    /**
     * This API is used to adjust the bandwidth limit of a classic elastic public IPv6 instance.

- You can adjust the bandwidth limit of only classic elastic public IPv6 instances.
- To adjust the bandwidth limit of an elastic public IPv6 instance, call the ModifyIPv6AddressesBandwidth API.
     * @param {ModifyIp6AddressesBandwidthRequest} req
     * @param {function(string, ModifyIp6AddressesBandwidthResponse):void} cb
     * @public
     */
    ModifyIp6AddressesBandwidth(req, cb) {
        let resp = new ModifyIp6AddressesBandwidthResponse();
        this.request("ModifyIp6AddressesBandwidth", req, resp, cb);
    }

    /**
     * This API (DescribeAddressTemplates) is used to query an IP address template.
     * @param {DescribeAddressTemplatesRequest} req
     * @param {function(string, DescribeAddressTemplatesResponse):void} cb
     * @public
     */
    DescribeAddressTemplates(req, cb) {
        let resp = new DescribeAddressTemplatesResponse();
        this.request("DescribeAddressTemplates", req, resp, cb);
    }

    /**
     * This API is used to create a VPN tunnel.
>?This API is async. You can call the [`DescribeVpcTaskResult`](https://intl.cloud.tencent.com/document/api/215/59037?from_cn_redirect=1) API to query the task result. When the task is completed, you can continue other tasks.
>
     * @param {CreateVpnConnectionRequest} req
     * @param {function(string, CreateVpnConnectionResponse):void} cb
     * @public
     */
    CreateVpnConnection(req, cb) {
        let resp = new CreateVpnConnectionResponse();
        this.request("CreateVpnConnection", req, resp, cb);
    }

    /**
     * This API (ModifyAddressAttribute) is used to modify the name of an [Elastic IP](https://intl.cloud.tencent.com/document/product/213/1941?from_cn_redirect=1).
     * @param {ModifyAddressAttributeRequest} req
     * @param {function(string, ModifyAddressAttributeResponse):void} cb
     * @public
     */
    ModifyAddressAttribute(req, cb) {
        let resp = new ModifyAddressAttributeResponse();
        this.request("ModifyAddressAttribute", req, resp, cb);
    }

    /**
     * This API (DescribeAddressTemplateGroups) is used to query an IP address template group.
     * @param {DescribeAddressTemplateGroupsRequest} req
     * @param {function(string, DescribeAddressTemplateGroupsResponse):void} cb
     * @public
     */
    DescribeAddressTemplateGroups(req, cb) {
        let resp = new DescribeAddressTemplateGroupsResponse();
        this.request("DescribeAddressTemplateGroups", req, resp, cb);
    }

    /**
     * This API is used to create an endpoint.
     * @param {CreateVpcEndPointRequest} req
     * @param {function(string, CreateVpcEndPointResponse):void} cb
     * @public
     */
    CreateVpcEndPoint(req, cb) {
        let resp = new CreateVpcEndPointResponse();
        this.request("CreateVpcEndPoint", req, resp, cb);
    }

    /**
     * This API is used to delete a Classiclink.
>?This API is async. You can call the [`DescribeVpcTaskResult`](https://intl.cloud.tencent.com/document/api/215/59037?from_cn_redirect=1) API to query the task result. When the task is completed, you can continue other tasks.
>
     * @param {DetachClassicLinkVpcRequest} req
     * @param {function(string, DetachClassicLinkVpcResponse):void} cb
     * @public
     */
    DetachClassicLinkVpc(req, cb) {
        let resp = new DetachClassicLinkVpcResponse();
        this.request("DetachClassicLinkVpc", req, resp, cb);
    }

    /**
     * This API is used to create destination routes of a route-based VPN gateway.
     * @param {CreateVpnGatewayRoutesRequest} req
     * @param {function(string, CreateVpnGatewayRoutesResponse):void} cb
     * @public
     */
    CreateVpnGatewayRoutes(req, cb) {
        let resp = new CreateVpnGatewayRoutesResponse();
        this.request("CreateVpnGatewayRoutes", req, resp, cb);
    }

    /**
     * This API is used to create security group policies (`SecurityGroupPolicy`).

For parameters of `SecurityGroupPolicySet`,
<ul>
<li>`Version`: The version number of a security group policy, which automatically increases by one each time you update the security policy, to prevent expiration of the updated routing policies. If it is left empty, any conflicts will be ignored.</li>
<li>When creating the `Egress` and `Ingress` polices,<ul>
<li>`Protocol`: Allows `TCP`, `UDP`, `ICMP`, `ICMPV6`, `GRE` and `ALL`.</li>
<li>`CidrBlock`: For the classic network, the `CidrBlock` can contain private IPs of Tencent Cloud resources that are not under your account. It does not mean that you can access these devices. The network isolation policies between tenants take priority over the private network policies in security groups.</li>
<li>`Ipv6CidrBlock`: For the classic network, `Ipv6CidrBlock` can contain private IPv6 addresses of Tencent Cloud resources that are not under your account. It does not mean that you can access these devices. The network isolation policies between tenants take priority over the private network policies in security groups.</li>
<li>`SecurityGroupId`: ID of the security group to create policies. </li>
<li>`Port`: A single port (“80”) or a port range ("8000-8010"). This parameter is only available when `Protocol` is `TCP` or `UDP`.</li>
<li>`Action`: `ACCEPT` or `DROP`.</li>
<li><code>CidrBlock</code>, <code>Ipv6CidrBlock</code>, <code>SecurityGroupId</code>, and <code>AddressTemplate</code> are mutually exclusive. <code>Protocol</code> + <code>Port</code> and <code>ServiceTemplate</code> are mutually exclusive. <code>IPv6CidrBlock</code> and <code>ICMP</code> are mutually exclusive; to use them, enter <code>ICMPV6</code>.</li>
<li>You can only create policies in one direction in each request. To specify the `PolicyIndex` parameter, use the same index number in policies. If you want to insert a rule before the first rule, enter 0; if you want to add a rule after the last rule, leave it empty.</li>
</ul></li></ul>
     * @param {CreateSecurityGroupPoliciesRequest} req
     * @param {function(string, CreateSecurityGroupPoliciesResponse):void} cb
     * @public
     */
    CreateSecurityGroupPolicies(req, cb) {
        let resp = new CreateSecurityGroupPoliciesResponse();
        this.request("CreateSecurityGroupPolicies", req, resp, cb);
    }

    /**
     * This API is used to modify the attributes of a network ACL.
     * @param {ModifyNetworkAclAttributeRequest} req
     * @param {function(string, ModifyNetworkAclAttributeResponse):void} cb
     * @public
     */
    ModifyNetworkAclAttribute(req, cb) {
        let resp = new ModifyNetworkAclAttributeResponse();
        this.request("ModifyNetworkAclAttribute", req, resp, cb);
    }

    /**
     * This API is used to adjust concurrent connection cap for the NAT gateway.
     * @param {ResetNatGatewayConnectionRequest} req
     * @param {function(string, ResetNatGatewayConnectionResponse):void} cb
     * @public
     */
    ResetNatGatewayConnection(req, cb) {
        let resp = new ResetNatGatewayConnectionResponse();
        this.request("ResetNatGatewayConnection", req, resp, cb);
    }

    /**
     * This API (ModifyVpcAttribute) is used to modify VPC attributes.
     * @param {ModifyVpcAttributeRequest} req
     * @param {function(string, ModifyVpcAttributeResponse):void} cb
     * @public
     */
    ModifyVpcAttribute(req, cb) {
        let resp = new ModifyVpcAttributeResponse();
        this.request("ModifyVpcAttribute", req, resp, cb);
    }

    /**
     * This API is used to query the endpoint list.
     * @param {DescribeVpcEndPointRequest} req
     * @param {function(string, DescribeVpcEndPointResponse):void} cb
     * @public
     */
    DescribeVpcEndPoint(req, cb) {
        let resp = new DescribeVpcEndPointResponse();
        this.request("DescribeVpcEndPoint", req, resp, cb);
    }

    /**
     * This API is used to query detailed information of one or more EIPv6 instances.

- You can query EIPv6 and traditional EIPv6 instance information in a specified region.
- The system returns a certain number (as specified by the Limit, the default value is 20) of EIPv6 instances of the current user if the parameter is empty.
     * @param {DescribeIPv6AddressesRequest} req
     * @param {function(string, DescribeIPv6AddressesResponse):void} cb
     * @public
     */
    DescribeIPv6Addresses(req, cb) {
        let resp = new DescribeIPv6AddressesResponse();
        this.request("DescribeIPv6Addresses", req, resp, cb);
    }

    /**
     * This API is used to create a security group, and add security group policies.
* For the the upper limit of security groups per project in each region under each account, <a href="https://intl.cloud.tencent.com/document/product/213/12453?from_cn_redirect=1">see here</a>
* For newly created security groups, the inbound and outbound policies are set to `Deny All` by default. You need to call <a href="https://intl.cloud.tencent.com/document/product/215/15807?from_cn_redirect=1">CreateSecurityGroupPolicies</a>
to change it.

Description:
* `Version`: The version number of a security group policy. It automatically increments by 1 every time you update the security policy, so to prevent the expiration of the updated policies. If this field is left empty, any conflicts will be ignored.
* `Protocol`: Values can be `TCP`, `UDP`, `ICMP`, `ICMPV6`, `GRE`, and `ALL`.
* `CidrBlock`: Enter a CIDR block in the correct format. In the classic network, even if the CIDR block specified in `CidrBlock` contains the Tencent Cloud private IPs not used for CVMs under your Tencent Cloud account, it does not mean this policy allows you to access those resources. The network isolation policies between tenants take priority over the private network policies in security groups.
* `Ipv6CidrBlock`: Enter an IPv6 CIDR block in the correct format. In the classic network, even if the CIDR block specified in `Ipv6CidrBlock` contains the Tencent Cloud private IPv6 addresses not used for CVMs under your Tencent Cloud account, it does not mean this policy allows you to access those resources. The network isolation policies between tenants take priority over the private network policies in security groups.
* `SecurityGroupId`: ID of the security group. It can be the ID of a security group to be modified, or the ID of another security group in the same project. All private IPs of all CVMs under the security group will be covered. If this field is used, the policy will automatically change according to the CVM associated with the group ID while being used to match network messages. You don't need to change it manually.
* `Port`: Enter a single port number (such as `80`), or a port range (such as `8000-8010`). `Port` is only applicable when `Protocol` is `TCP` or `UDP`. If `Protocol` is not `TCP` or `UDP`, `Protocol` and `Port` cannot be both specified. 
* `Action`: Values can be `ACCEPT` or `DROP`.
* `CidrBlock`, `Ipv6CidrBlock`, `SecurityGroupId`, and `AddressTemplate` are exclusive to one another. "Protocol + Port" and `ServiceTemplate` are mutually exclusive.
* Only policies in one direction can be created in each request. If you need to specify the `PolicyIndex` parameter, the indexes of policies must be consistent.
     * @param {CreateSecurityGroupWithPoliciesRequest} req
     * @param {function(string, CreateSecurityGroupWithPoliciesResponse):void} cb
     * @public
     */
    CreateSecurityGroupWithPolicies(req, cb) {
        let resp = new CreateSecurityGroupWithPoliciesResponse();
        this.request("CreateSecurityGroupWithPolicies", req, resp, cb);
    }

    /**
     * This API is used to create the endpoint service allowlist.
     * @param {CreateVpcEndPointServiceWhiteListRequest} req
     * @param {function(string, CreateVpcEndPointServiceWhiteListResponse):void} cb
     * @public
     */
    CreateVpcEndPointServiceWhiteList(req, cb) {
        let resp = new CreateVpcEndPointServiceWhiteListResponse();
        this.request("CreateVpcEndPointServiceWhiteList", req, resp, cb);
    }


}
module.exports = VpcClient;
